En supposant que vous souhaitiez un nombre récursif de fichiers uniquement, pas de répertoires ni d'autres types, quelque chose comme ceci devrait fonctionner :
find . -maxdepth 1 -mindepth 1 -type d | while read dir; do
printf "%-25.25s : " "$dir"
find "$dir" -type f | wc -l
done
Cette tâche m'a tellement fasciné que j'ai voulu trouver une solution moi-même. Cela ne prend même pas une boucle de temps et PEUT être plus rapide en vitesse d'exécution. Inutile de dire que les efforts de Thor m'ont beaucoup aidé à comprendre les choses en détail.
Alors voici le mien :
find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "{} : $(find "{}" -type f | wc -l)" file\(s\)' \;
Il a l'air modeste pour une raison, car il est bien plus puissant qu'il n'y paraît. :-)
Cependant, si vous avez l'intention de l'inclure dans votre .bash_aliases
fichier, il doit ressembler à ceci :
alias somealias='find . -maxdepth 1 -mindepth 1 -type d -exec sh -c '\''echo "{} : $(find "{}" -type f | wc -l)" file\(s\)'\'' \;'
Notez la manipulation très délicate des simples imbriqués devis. Et non, ce n'est pas possible d'utiliser des guillemets doubles pour le sh -c
arguments.
find . -type f | cut -d"/" -f2 | uniq -c
Répertorie les dossiers et les fichiers du dossier actuel avec le nombre de fichiers trouvés en dessous. IMO rapide et utile. (les fichiers s'affichent avec le compte 1).