Analyse de repertoire

Bonjour,

je voudrais faire un check des fichiers par repertoires et y integrer quelques libellés:

pour cela j'ai un fichier de config qui intègre le nom des repertoires que je veux checker:
envrep="/home/test"
cat file.txt #=>represente les repertoires qui sont present dans $envrep
100
101
102
103
104
105


ma boucle qui marche très bien:
cat file.txt|while read line; do
if [ -d "$envrep/$line" ]
then
Nbr='find $envrep/$line \( ! -name $line -prune \) -type f 2> /dev/null |wc -l'
if [[ $Nbr -gt 0 ]]
then
oldfile='ls -lrt $envrep/$line/|head -1|awk {' print $8 '}'
oldfilenm='ls -lrt $envrep/$line/|head -1|awk {' print $9 '} |rev|cut -b 1-16|rev'
newfilenm='ls -lrt $envrep/$line/|tail -1|awk {' print $8 '}'
printf "#%11s %20s %15s %25s %20s %10s\n" "$line" "$Nbr" "$oldfile" "$oldfilenm" "$newfilenm" "#"
fi
fi
done
}

printf '\033[1;30;47m'
echo "#-------------------------------------------------------------------------------------------------------#"
printf "#%11s %10s %15s %25s %25s %5s\n" "Repertoire" "Nbr" "+ ancien" "FileName + ancien" "Heure + recent" "#"
echo "#-------------------------------------------------------------------------------------------------------#"
printf '\033[0m'
count
echo "#-------------------------------------------------------------------------------------------------------#"


RESULTAT:

(je ne sais pas si ça va se voir dans le cadre de la fenetre du navigateur mais bon...)

#------------------------------------------------------------------------------------------------------------#
# Repertoire Nbr + ancien FileName + ancien Heure + recent #
#------------------------------------------------------------------------------------------------------------#
# 102 12 20:01 fic.exte 04:12 #
# 105 15 23:09 hok.txt 05:29 #
#####################################################################

ce que je voudrais faire c'est rajouter un libellé:
RESULTAT VOULU:
#-----------------------------------------------------------------------------------------------------------------------------#
# Repertoire NOM Nbr + ancien FileName + ancien Heure + recent #
#-----------------------------------------------------------------------------------------------------------------------------#
# 102 Pascal 12 20:01 fic.exte 04:12 #
# 105 Remy 15 23:09 hok.txt 05:29 #
#-------------------------------------------------------------------------------------------------------------------------------

je pensais pouvoir intégrer le nom dans le fichier conf

cat file.txt =>représente les repertoires qui sont present dans $envrep
100;eric
101;moi
102;Pascal
103;Bill
104;Robert
105;Remy


où intégégré ma nouvelle variable NOM pour qu'elle soit vraiment prise en compte dans mon tableau à chq fois que la variable $line apparait ?

Si vous avez une idée

4 réponses

  1. par contre c'est vachement mal présenté... je comprend pas.

    le tableau est trop grand pour la page du navigateur.... là c'est moche.

    cat file.txt|while read line; do 
    if [ -d "$envrep/$line" ] 
    then 
    Nbr='find $envrep/$line \( ! -name $line -prune \) -type f 2> /dev/null |wc -l' 
    if [[ $Nbr -gt 0 ]] 
    then 
    oldfile='ls -lrt $envrep/$line/|head -1|awk {' print $8 '}' 
    oldfilenm='ls -lrt $envrep/$line/|head -1|awk {' print $9 '} |rev|cut -b 1-16|rev' 
    newfilenm='ls -lrt $envrep/$line/|tail -1|awk {' print $8 '}' 
    printf "#%11s %20s %15s %25s %20s %10s\n" "$line" "$Nbr" "$oldfile" "$oldfilenm" "$newfilenm" "#" 
    fi 
    fi 
    done 
    } 
    printf '\033[1;30;47m' 
    echo "#---------------------------------------------------------------------#" 
    printf "#%11s %10s %15s %25s %25s %5s\n" "Repertoire" "Nbr" "+ ancien" "FileName + ancien" "Heure + recent" "#" 
    echo "#---------------------------------------------------------------------#" 
    printf '\033[0m' 
    count 
    echo "#----------------------------------------------------------------------#" 


    #-------------------------------------------------------------------# 
    # Repertoire Nbr  +ancien   FileName+ancien   Heure + recent   # 
    #-----------------------------------------------------------------------------# 
    # 102	     12          20:01        fic.exte	    04:12	  # 
    # 105        15         23:09       hok.txt     05:29          # 
    ############-################################## 
    1. Contributeur
      Salut,

      Avec un fichier en entrée de la sorte :
      100;eric
      101;moi
      102;Pascal
      103;Bill
      104;Robert
      105;Rem 
       

      Il te suffit de modifier comme suit :
      cat file.txt|while IFS=";" read nombre nom; do 

      Et d'appeler tes variables ainsi créées ;-))
      1. Merci pour ta réponse.

        Quand je fais ça... ça me renvoie un tableau vide.
        1. Contributeur
          Montres ce que tu fais.
      2. salut,

        il faut préférer stat, plutôt que ls!
        ls à parser, c'est la plaie.
        stat n'affiche que les données souhaitées.