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

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

Tenho uma árvore de diretórios muito específica na minha biblioteca de música. 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

Gostaria que o comando retornasse "4" .

Então, basicamente, quero que o comando retorne o número de álbuns, ou pontos de bônus, se retornar "2" interpretações e "4" álbuns.

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

Como posso fazer isso mais facilmente?

Responder1

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 %qformato é usado aqui para evitar que nomes de á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 musicestá no diretório atual. Se o musicdiretório for realmente /music, coloque a /na frente musicde todos os comandos acima. Caso contrário, coloque na frente qualquer caminho que irá alcançar music.

Responder2

Você pode usar findpara listar todos os subdiretórios. Depois é só contar o número de barras por linha e informar com que frequência houve 3 delas:

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

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

Responder3

Acho que você está procurando um pouco de magia para 'encontrar'. Correndo

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

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

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

deve retornar o número de artistas.

informação relacionada