Je veux trouver le nombre total de fichiers dans un dossier et tous ses sous-dossiers.
Peut être quelque chose comme
find . -type f | wc -l
ferait l'affaire. Essayez la commande à partir du dossier parent.
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.
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
Le moyen le plus rapide et le plus simple consiste à utiliser tree
name__. 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 .
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.
Utilisez cette commande pour chaque dossier du chemin.
for D in *; do echo $D; find $D -type f| wc -l; done
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
J'irais moi-même avec cette option:
ls -alR | grep -c ^ -