Mise en garde
Pour compter le nombre de fichier au sein d'un répertoire, le shelliste débutant aura tendance à exécuter : ls -l | wc -l
Cette méthode a plusieurs inconvénients :
- Elle va compter le nombre de lignes en sortie du ls (grâce à wc -l) et donc potentiellement les informations complémentaires (comme la taille totale des fichiers)
- Elle prend indisctinctement les fichiers comme les sous-répertoires
- Elle ne descend pas dans les sous-répertoires
Comment faire ?
La clé est de passer par la commande find qui va de plus nous permettre une plus grande granularité. On conserve wc -l pour compter le nombre d'éléments et on ajoute un tout petit peu de awk pour afficher cela proprement et simplement.
Nombre de fichiers dans une arborescence (dossier et tous ses sous-dossiers)
find /home/toto -type f | wc -l | awk '{print $1}'
Nombre de fichiers dans un dossier (sans descendre dans ses sous-dossiers)
find /home/toto -maxdepth 1 -type f | wc -l | awk '{print $1}'