web-dev-qa-db-fra.com

Trouver le nombre de fichiers dans le dossier et les sous-dossiers?

Je veux trouver le nombre total de fichiers dans un dossier et tous ses sous-dossiers.

136
topless

Peut être quelque chose comme

find . -type f | wc -l

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

214
sagarchalise

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

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

26
Egil

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
13
user38537

Le moyen le plus rapide et le plus simple consiste à utiliser treename__. Sa vitesse est limitée par votre terminal de sortie. Ainsi, si vous dirigez le résultat vers tail -1, vous obtiendrez un résultat immédiat. Vous pouvez également contrôler à quel niveau de répertoire vous aimez les résultats, à l'aide de l'option -L. Pour une sortie en couleur, 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à fait, vous pouvez l'obtenir ici .

13
not2qubit
find -type f -printf . | wc -c

Ne comptez pas les lignes de sortie de find, car les noms de fichiers contenant 99 sauts à la ligne compteront pour 100 fichiers.

7
user unknown

Utilisez cette commande pour chaque dossier du chemin.

for D in *; do echo $D; find $D -type f| wc -l; done
3
Sriram Murali

find semble être plus rapide que l'arbre, j'ai donc utilisé ci-dessous pour compter les fichiers dans chaque répertoire du répertoire de travail actuel (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

1
Mike Bounds

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

ls -alR | grep -c ^ -

0
Charles