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. 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?

    
por Moritz Ko 11.08.2016 / 01:08

3 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/

Para contá-los:

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

O formato %q é 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 diretório music for realmente /music , coloque um / na frente de music em todos os comandos acima. Caso contrário, coloque em frente qualquer caminho que chegue a music .

    
por 11.08.2016 / 01:32
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 ^///$

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

    
por 11.08.2016 / 01:32
0

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

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

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

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

deve retornar o número de artistas.

    
por 11.08.2016 / 01:42