
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 %q
formato é 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 music
está no diretório atual. Se o music
diretório for realmente /music
, coloque a /
na frente music
de todos os comandos acima. Caso contrário, coloque na frente qualquer caminho que irá alcançar music
.
Responder2
Você pode usar find
para 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.