Quero uma lista de diretórios com a quantidade de mp3
arquivos contidos neles ; então, classificá-los desc - simplesmente para ver quais diretórios contêm mais arquivos.
Meu comando
## Relevant command
find . -mindepth 1 -type f -iname "*.mp3" -printf '%P\0' |
awk -F/ -vRS='\0' '{n[$1]++}; END{for (i in n) {printf(n[i]" "i" \n")};}' > ./foo.txt
sort -rno ./foo.txt ./foo.txt
## Full command (output improvements only)
find . -mindepth 1 -type f -iname "*.mp3" -printf '%P\0' |
awk -F/ -vRS='\0' '{n[$1]++}; END{for (i in n) {printf("%03d",n[i]);printf(" ");printf(substr(i,0,60));printf("\n")}; if(length(n)==0) print "NO mp3 found." }' > ./foo.txt
sort -rno ./foo.txt ./foo.txt
Estrutura de diretório
./dir_1/fileA.mp3
./dir_2/subdir_1/fileB.mp3
./dir_2/subdir_2/fileC.mp3
./dir_2/subdir_2/fileD.mp3
...
Saída
# What I get:
003 dir_2
001 dir_1
# What I want:
002 dir_2/subdir_2
001 dir_2/subdir_1
001 dir_1
O Problema
Ele só imprime os diretórios mais altos, não os mais profundos possíveis. Ele soma a contagem de mp3 dos subdiretórios.
Não posso aumentar -mindepth
porque a profundidade varia.
Seria bom ter os dois, assim:
003 dir_2
002 dir_2/subdir_2
001 dir_2/subdir_1
001 dir_1
Tentei o find -links 2
argumento, mas ele só funciona para -type d
não -type f
.