Comment puis-je trouver tous les dossiers d'un répertoire qui contiennent moins de x nombre de .flac
des fichiers ?
Réponses
Trop de publicités?-
Pour chaque sous-répertoire, imprimez le nom du sous-répertoire s'il y en a au plus 42.
.flac
dans le sous-répertoire. Pour exécuter une commande sur les répertoires, remplacez-print
por-exec … \;
. Conforme à POSIX.find . -type d -exec sh -c 'set -- "$0"/*.flac; [ $# -le 42 ]' {} \; -print
Notez que cette commande ne fonctionnera pas pour rechercher des répertoires contenant zéro
.flac
fichiers ("$0/*.flac"
s'étend à au moins un mot). Au lieu de cela, utilisezfind . -type d -exec sh -c 'set -- "$0"/*.flac; ! [ -e "$1" ]' {} \; -print
-
Même algorithme dans zsh.
**/*
s'étend à tous les fichiers du répertoire courant et de ses sous-répertoires de manière récursive.**/*(/)
limite l'expansion aux répertoires.{.,**/*}(/)
ajoute le répertoire courant. Enfin,(e:…:)
restreint l'expansion aux correspondances pour lesquelles le code Shell renvoie 0.echo {.,**/*}(/e:'set -- $REPLY/*.flac(N); ((# <= 42))':)
Pour plus de lisibilité, on peut le décomposer en deux étapes.
few_flacs () { set -- $REPLY/*.flac(N); ((# <= 42)); } echo {.,**/*}(/+few_flacs)
<strong>Changelog </strong>:<br>- gérer x=0 correctement.<br>