Je voudrais une commande BASH pour lister seulement le nombre de fichiers dans chaque sous-répertoire d'un répertoire.
Par exemple, dans le répertoire /tmp
il y a dir1
, dir2
, ... J'aimerais voir :
`dir1` : x files
`dir2` : x files ...
Je voudrais une commande BASH pour lister seulement le nombre de fichiers dans chaque sous-répertoire d'un répertoire.
Par exemple, dans le répertoire /tmp
il y a dir1
, dir2
, ... J'aimerais voir :
`dir1` : x files
`dir2` : x files ...
Cette tâche m'a tellement fasciné que j'ai voulu trouver moi-même une solution. Il n'y a même pas besoin de boucle while et de MAI ê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. :-)
Toutefois, si vous avez l'intention de l'inclure dans votre .bash_aliases
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 gestion très délicate de l'imbrication des simple citations. Et non, c'est pas Il est possible d'utiliser des guillemets doubles pour les sh -c
argument.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.