find . -type f -name "*.mp3" -exec dirname {} \; | uniq | wc -l
Como posso saber quantos diretórios (no diretório atual) têm pelo menos 1 arquivo com extensão .mp3.
Não é necessário recursão - a estrutura de diretórios do diretório atual é, por exemplo:
1/blabla.mp3
2
3/something.mp3
4
5
O comando deve retornar que há 2 dirs com arquivo (s) mp3.
find . ! -name . -prune -type d -exec sh -c '
yes | head -1 |
find "$1/." ! -name . -prune -type f \
\( -name '*.[mM][pP]3' -o -name '.*.[mM][pP]3' \) \
-exec sh -c "read foo" \; -print
' {} {} \; | wc -l |
sh -c 'read n;echo "There are $n dirs with mp3 files."'
O "find" externo seleciona todos os subdiretórios no diretório atual. e depois desce em cada um deles e os encontra de forma não recursiva, se eles contiverem pelo menos um arquivo mp3, incluindo ocultos e insensíveis a maiúsculas e minúsculas.