-
Para cada subdiretório, imprima o nome do subdiretório se houver no máximo 42% dos arquivos
.flac
no subdiretório. Para executar um comando nos diretórios, substitua-print
by-exec … \;
. Compatível com POSIX.find . -type d -exec sh -c 'set -- "$0"/*.flac; [ $# -le 42 ]' {} \; -print
Observe que este comando não funcionará para procurar diretórios contendo zero
.flac
files ("$0/*.flac"
expande para pelo menos uma palavra). Em vez disso, usefind . -type d -exec sh -c 'set -- "$0"/*.flac; ! [ -e "$1" ]' {} \; -print
-
O mesmo algoritmo em zsh.
**/*
expande para todos os arquivos no diretório atual e seus subdiretórios recursivamente.**/*(/)
restringe a expansão aos diretórios.{.,**/*}(/)
adiciona o diretório atual. Finalmente,(e:…:)
restringe a expansão para as correspondências para as quais o código de shell retorna 0.echo {.,**/*}(/e:'set -- $REPLY/*.flac(N); ((# <= 42))':)
Isso pode ser dividido em duas etapas para legibilidade.
few_flacs () { set -- $REPLY/*.flac(N); ((# <= 42)); } echo {.,**/*}(/+few_flacs)
Changelog :
• manipule x = 0 corretamente.