je dois faire un script qui doit compter le nombre de fichiers (du répertoire courant et de ses sous répertoires) par extension mais j'ai pas des idées. vous pouvez m'aider svp? merci :bug:
Version imprimable
je dois faire un script qui doit compter le nombre de fichiers (du répertoire courant et de ses sous répertoires) par extension mais j'ai pas des idées. vous pouvez m'aider svp? merci :bug:
pourquoi faire un scriptCode:ls -lRrt | grep "\.ext" | wc -l
pareil suffit de le mettre dans une boucle et d'ameliorer l'affichage avec un echo
c'est à dire :Code:
1
2
3
4 pour tout (lister fichier | couper extention | unique) faire lister les fichier de cette extentions et les compter done
ne pas oublier de décompter les fichiers sans extensions (grep -v 0)Code:
1
2
3
4
5 ggm(root/root)[GCXW]/xplt/nx/bn>for i in $(ls -lrtR *.* | cut -d"." -f2 | sort -u ) ; do echo "----$i----\c" ; ls -lrtR *$i 2> /dev/null | wc -l | grep -v 0; done ----GP---- 1 ----ksh---- 7 ----sh---- 32 ggm(root/root)[GCXW]/xplt/nx/bn>
pour améliorer tu peux bien sur garantir de compter que des fichiers et pas de repertoires ou liens ou tout ce que tu veux dans la boucle bien sur....
tu peux faire la meme chose dans un script :
Code:
1
2
3
4
5
6
7
8 #!/bin/ksh for i in $(ls -lrtR *.* | cut -d"." -f2 | sort -u ) do echo "----$i----\c" ls -lrtR *$i 2> /dev/null | wc -l | grep -v 0 done exit $?
@frp31 merci beaucoup mais :cry: .... il ma compte que les fichiers du directeur courant et il m'affiche le nb de fichiers sur une autre ligne :((
le repertoire courrant c'est pas possible si tu mets R dnas les options de ls
sur une autre ligne c'est possible si ton shell n'interprete pas le "\c"
la c'est du ksh pas du bash donc il peut y avoir des petites differences.
voila :
Code:
1
2
3
4
5 linux-jqe6:~/Desktop/andrei # ./script jpg ---\c 3 txt ---\c 2
c'est bien ce que je disais ton \c n'est pas interprete mais affiche
et \c permet de faire quoi sur ksh ? d'afficher le nb de fichiers sur la mme ligne? peut-etre je peux trouver la solution ...
j'ai trouve la solution:
mais il affiche toujours le nombre de fichiers pour le directeur courant et pas pour le directeur courant & les sous-directeursCode:
1
2
3
4
5
6 for i in $(ls -lrtR *.* | cut -d"." -f2 | sort -u ) do echo "----$i----\c" ls -lrtR *$i 2> /dev/null | wc -l | grep -v 0 done exit $?
Quelqu'un peut m'expliquer cette commande en détaille SVP SVP SVP :pleure:, je suis novice en bash et j'ai besoin de la comprendre .:?
Que fait lRrt et grep?Code:ls -lRrt | grep "\.java" | wc -l
et mrc.
salut,
bon c'est sans doute pas la meilleure et encore moins la plus lisible des solutions mais for fun un combo find+perl:
Code:find . -type f | perl -F"\." -lane '$tab{$F[-1]}++ if /\.[^.]{0,3}$/; END {foreach $k (sort {$tab{$b} <=> $tab{$a}} keys %tab) {print "$tab{$k}\t$k"}}'
Bonjour,
Code:find . -type f -name "*.*"|awk -F. '{a[$NF]++;} END{for (i in a) print a[i],i;}'
Non, car la question n'a rien à voir, ni avec la discussion, ni avec le premier posteur. Si elle veut, elle peut ouvrir sa propre discussion.Citation:
heu, les gars, ça vous dirait de répondre à la dernière question ?
c'est, à tout petit détail près, la commande proposée par frp31 dans sa première réponse (deuxième message de la discussion).