1099 votes

Compter récursivement les fichiers dans un répertoire Linux

Comment puis-je compter récursivement les fichiers dans un répertoire Linux ?

J'ai trouvé ça :

find DIR_NAME -type f ¦ wc -l

Mais lorsque je l'exécute, il renvoie l'erreur suivante.

find : les chemins doivent précéder l'expression : ¦

91 votes

Vous confondez la barre cassée ¦ (ASCII 166) avec la barre verticale | (ASCII 124) utilisé pour Pipeline UNIX .

12 votes

@SkippyleGrandGourou Ça ne s'appelle pas un tuyau ?

38 votes

DaveStephens Oui, on l'appelle aussi comme ça. On l'appelle aussi trait de Sheffer, verti-bar, vbar, bâton, ligne verticale, barre verticale, barre, obélisque, glidus.

2voto

pufferfish Points 3512

Il y a beaucoup de réponses correctes ici. En voici une autre !

find . -type f | sort | uniq -w 10 -c

. est le dossier à consulter et 10 est le nombre de caractères par lesquels il faut regrouper le répertoire.

2voto

the8472 Points 588

J'ai écrit ffcnt pour accélérer le comptage récursif des fichiers dans des circonstances spécifiques : disques rotatifs et systèmes de fichiers qui prennent en charge le mappage d'étendue.

Il peut être un ordre de grandeur plus rapide que ls o find mais c'est une question de jugement.

2voto

SauloAlessandre Points 497

Si vous voulez un total de fichiers par répertoire, essayez :

for d in `find YOUR_SUBDIR_HERE -type d`; do 
   printf "$d - files > "
   find $d -type f | wc -l
done

pour le répertoire actuel, essayez ceci :

for d in `find . -type d`; do printf "$d - files > "; find $d -type f | wc -l; done;

si vous avez des noms d'espaces longs, vous devez changer d'IFS, comme ceci :

OIFS=$IFS; IFS=$'\n'
for d in `find . -type d`; do printf "$d - files > "; find $d -type f | wc -l; done
IFS=$OIFS

0voto

DanielK Points 171

Cette approche alternative avec filtrage pour le format compte tous les modules de noyau de grub disponibles :

ls -l /boot/grub/*.mod | wc -l

0voto

mlemanczyk Points 121

Sur la base des réponses données ci-dessus et des commentaires, j'ai établi la liste suivante du nombre de fichiers. Il s'agit surtout d'une combinaison de la solution fourni par @Greg Bell, avec des commentaires de @Arch Stanton et @Schneems

Compter tous les fichiers dans le répertoire actuel et les sous-répertoires

function countit { find . -maxdepth 1000000 -type d -print0 | while IFS= read -r -d '' i ; do file_count=$(find "$i" -type f | wc -l) ; echo "$file_count: $i" ; done }; countit | sort -n -r >file-count.txt

Compte tous les fichiers de nom donné dans le répertoire courant et les sous-répertoires.

function countit { find . -maxdepth 1000000 -type d -print0 | while IFS= read -r -d '' i ; do file_count=$(find "$i" -type f | grep <enter_filename_here> | wc -l) ; echo "$file_count: $i" ; done }; countit | sort -n -r >file-with-name-count.txt

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X