Analyse de repertoire
yepimback
-
Utilisateur anonyme -
Utilisateur anonyme -
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
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
-
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 # ############-##################################
-
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 ;-)) -
-
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.