Trouvez le nombre de fichiers dans les dossiers et sous-dossiers?

111

Je souhaite connaître le nombre total de fichiers sous un dossier et tous ses sous-dossiers.

    
posée topless 08.04.2011 - 13:55
la source

9 réponses

175

Peut-être quelque chose comme

find . -type f | wc -l

ferait l'affaire. Essayez la commande du dossier parent.

    
réponse donnée sagarchalise 08.04.2011 - 14:06
la source
21

Utilisez la commande tree . Vous devrez peut-être installer le package tree .

Il listera tous les fichiers et dossiers du dossier donné et listera un résumé à la fin.

    
réponse donnée Egil 08.04.2011 - 14:09
la source
9

Pour compter les fichiers (même les fichiers sans extension) à la racine du répertoire en cours, utilisez:

ls -l | grep ^- | wc -l

Pour compter les fichiers (même les fichiers sans extension) récursivement à partir de la racine du répertoire en cours, utilisez:

ls -lR | grep ^- | wc -l
    
réponse donnée user38537 12.11.2013 - 21:39
la source
9

Le moyen le plus rapide et le plus simple consiste à utiliser tree . Sa vitesse est limitée par votre terminal de sortie, donc si vous conduisez le résultat à tail -1 , vous obtiendrez un résultat immédiat. Vous pouvez également contrôler à quel niveau de répertoire vous aimez les résultats, en utilisant l'option -L . Pour la sortie colorisée, utilisez -C . Par exemple:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

Si ce n’est pas déjà là, vous pouvez l’obtenir ici .

    
réponse donnée not2qubit 15.01.2014 - 14:20
la source
4
find -type f -printf . | wc -c

Ne comptez pas les lignes de sortie de find, car les noms de fichiers, contenant 99 nouvelles lignes, compteront pour 100 fichiers.

    
réponse donnée user unknown 08.04.2011 - 16:21
la source
2

Utilisez cette commande pour chaque dossier du chemin

for D in *; do echo $D; find $D -type f| wc -l; done
    
réponse donnée Sriram Murali 20.03.2014 - 19:02
la source
1

find semble être plus rapide que tree, donc j'ai utilisé ci-dessous pour compter les fichiers dans chaque répertoire du répertoire de travail en cours (en ignorant les fichiers dans CWD) en permettant aux répertoires d'avoir des espaces:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

    
réponse donnée Mike Bounds 21.07.2016 - 11:47
la source
0

Vous pouvez utiliser find . | wc -l

find . listera tous les fichiers et dossiers et leur contenu commencera dans votre dossier actuel.
wc -l compte les résultats de find

    
réponse donnée david 08.04.2011 - 14:06
la source
0

J'irais avec cette option moi-même:

  

ls -alR | grep -c ^ -

    
réponse donnée Charles 29.05.2016 - 08:55
la source

Lire d'autres questions sur les étiquettes