Je veux trouver le nombre total de fichiers dans un dossier et tous ses sous-dossiers.
Je veux trouver le nombre total de fichiers dans un dossier et tous ses sous-dossiers.
Réponses:
Peut être quelque chose comme
find . -type f | wc -l
ferait l'affaire. Essayez la commande à partir du dossier parent.
find . -type f -ls | wc -l
find . -type f -print0 | tr -d -c '\0' | wc -c
find . -type f -printf . | wc -c
- J'adopte l'impression de ma solution au lieu de mon écho -exec.
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 ceux sans extension) de manière récursive à 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
. Sa vitesse est limitée par votre terminal de sortie. Ainsi, si vous transmettez 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' -L
option. Pour une 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 .
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
ls
est une très mauvaise idée.
Vous pouvez utiliser find . | wc -l
find .
listera tous les fichiers et dossiers et leur contenu commençant dans votre dossier actuel.
wc -l
compte les résultats de find
J'irais moi-même avec cette option:
ls -alR | grep -c ^ -