Como posso contar o número de pastas em um nível de pasta específico usando o terminal Linux?

1

Eu tenho uma árvore de diretórios muito específica na minha biblioteca de músicas. Eu gostaria de contar todos os álbuns, excluindo todos os subdiretórios.

Por exemplo, dada esta árvore de diretórios:

/music/
/music/Davis, Miles/                           
/music/Davis, Miles/Kind of Blue/                
/music/Davis, Miles/Tutu/                    
/music/Hendrix, Jimi/                              
/music/Hendrix, Jimi/Axis Bold As Love/               
/music/Hendrix, Jimi/Electric Ladyland/              
/music/Hendrix, Jimi/Electric Ladyland/Disk 1   
/music/Hendrix, Jimi/Electric Ladyland/Disk 2

Eu gostaria que o comando retornasse "4".

Então basicamente eu quero que o comando retorne o número de álbuns, ou, pontos de bônus se ele retornar "2" Interprets e "4" álbuns.

(E pontos de bónus duplos se também listar as interpretações e os álbuns.)

Como posso mais facilmente fazer isso?

Moritz Ko
fonte
O que é um "interpretar"?
John1024

Respostas:

0

Para ver os quatro álbuns:

$ ls -d1 music/*/*/
music/Davis, Miles/Kind of Blue/
music/Davis, Miles/Tutu/
music/Hendrix, Jimi/Axis Bold As Love/
music/Hendrix, Jimi/Electric Ladyland/

Contá-los:

$ printf "%q\n" music/*/*/ | wc -l
4

o %q O formato é usado aqui para evitar que os nomes dos álbuns com novas linhas sejam contados mais de uma vez.

Para ver os artistas:

$ ls -d1 music/*/
music/Davis, Miles/
music/Hendrix, Jimi/

Para contar o número de artistas:

$ printf "%q\n" music/*/ | wc -l
2

Os comandos acima assumem que music está no diretório atual. Se o music diretório é realmente /music, em seguida, coloque um / em frente de music em todos os comandos acima. Caso contrário, coloque na frente o caminho que vai chegar music.

John1024
fonte
0

Você pode usar find para listar todos os subdiretórios. Em seguida, basta contar o número de barras por linha e informar com que freqüência havia três delas:

find -type d | sed s%[^/]%%g | grep -c ^///$

Usar ^//$ para obter o número de interpretações.

choroba
fonte
0

Eu acho que você está procurando por um pouco de 'encontrar' mágica. Corrida

find /music -mindepth 2 -maxdepth 2 -type d | wc -l

deve fornecer o número de álbuns da sua coleção. Corrida

find /music -mindepth 1 -maxdepth 1 -type d | wc -l

deve retornar o número de artistas.

DrDR
fonte