La façon la plus simple semble être find /path/to/search -ls | wc -l
La recherche est utilisée pour parcourir tous les fichiers et dossiers.
-ls
pour lister (imprimer) tous les noms. Il s'agit d'une valeur par défaut et si vous la laissez de côté, elle fonctionnera toujours de la même manière sur presque tous les systèmes. (Presque, car certains peuvent avoir des valeurs par défaut différentes). C'est une bonne habitude de l'utiliser explicitement cependant.
Si vous utilisez simplement la find /path/to/search -ls
partie, tous les fichiers et répertoires seront imprimés sur votre écran.
wc
est le nombre de mots. l' -l
option lui dit de compter le nombre de lignes.
Vous pouvez l'utiliser de plusieurs manières, par exemple
- wc testfile
- fichier de test de chat | toilettes
La première option permet à wc d'ouvrir un fichier et de compter le nombre de lignes, de mots et de caractères dans ce fichier. La deuxième option fait de même mais sans nom de fichier, elle lit depuis stdin.
Vous pouvez combiner des commandes avec un tuyau |
. La sortie de la première commande sera dirigée vers l'entrée de la deuxième commande. Ainsi find /path/to/search -ls | wc -l
utilise find pour lister tous les fichiers et répertoires et alimente la sortie vers wc. Wc compte alors le nombre de lignes.
(Une autre alternative aurait été «ls | wc», mais find est beaucoup plus flexible et un bon outil pour apprendre.)
[Modifier après commentaire]
Il pourrait être utile de combiner la recherche et l'exec.
Par exemple find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
, listera tous les répertoires dans /, sauf certains que vous ne souhaitez pas rechercher. Nous pouvons déclencher la commande précédente sur chacun d'eux, produisant une somme de fichiers par dossier dans /.
Toutefois:
- Cela utilise l'extension spécifique GNU -maxdepth.
Cela fonctionnera sur Linux, mais pas sur n'importe quel Unix-a-alike.
- Je soupçonne que vous pourriez réellement vouloir un certain nombre de fichiers fo pour chaque sous-répertoire.