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 : ¦
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 : ¦
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.
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
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 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.
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.
83 votes
@zenith Je l'appelle simplement Bob.
28 votes
Dans la RFC20, il est appelé "ligne verticale". "Pipe" est le nom de l'opérateur shell, plutôt que le nom du symbole. Tout comme
*
est le caractère ASCII "astérisque", mais "times" dans certains autres contextes.0 votes
@slim C'est de loin la réponse la plus utile. De loin, et même plus.