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![]()
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![]()
pourquoi faire un script
Code : Sélectionner tout - Visualiser dans une fenêtre à part ls -lRrt | grep "\.ext" | wc -l
ouais mais je dois faire un script pour compter le nombre de fichiers par extension. exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 3 exe 2 jpg 5 pnm 1 txt, etc
pareil suffit de le mettre dans une boucle et d'ameliorer l'affichage avec un echo
c'est à dire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 pour tout (lister fichier | couper extention | unique) faire lister les fichier de cette extentions et les compter donene pas oublier de décompter les fichiers sans extensions (grep -v 0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.... 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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-directeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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, je suis novice en bash et j'ai besoin de la comprendre .
Que fait lRrt et grep?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part find . -type f -name "*.*"|awk -F. '{a[$NF]++;} END{for (i in a) print a[i],i;}'
Cette réponse vous apporte quelque chose ? Cliquez suren bas à droite du message.
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.heu, les gars, ça vous dirait de répondre à la dernière question ?
Cette réponse vous apporte quelque chose ? Cliquez suren bas à droite du message.
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).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager