
Tengo un árbol de directorios muy específico en mi biblioteca de música. Me gustaría contar todos los álbumes, excluyendo todos los subdirectorios.
Por ejemplo, dado este árbol de directorios:
/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
Me gustaría que el comando devuelva "4".
Básicamente, quiero que el comando devuelva la cantidad de álbumes o puntos de bonificación si devuelve "2" interpretaciones y "4" álbumes.
(Y el doble de puntos de bonificación si además enumera los intérpretes y álbumes).
¿Cómo puedo hacer esto más fácilmente?
Respuesta1
Para ver los cuatro álbumes:
$ 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 contarlos:
$ printf "%q\n" music/*/*/ | wc -l
4
El %q
formato se utiliza aquí para evitar que los nombres de álbumes con nuevas líneas se cuenten más de una vez.
Para ver a los artistas:
$ ls -d1 music/*/
music/Davis, Miles/
music/Hendrix, Jimi/
Para contar el número de artistas:
$ printf "%q\n" music/*/ | wc -l
2
Los comandos anteriores suponen que music
está en el directorio actual. Si el music
directorio es realmente /music
, coloque un /
delante de music
en todos los comandos anteriores. En caso contrario, ponga delante el camino que alcance music
.
Respuesta2
Puede utilizar find
para enumerar todos los subdirectorios. Luego simplemente cuente el número de barras por línea e informe con qué frecuencia hubo 3 de ellas:
find -type d | sed s%[^/]%%g | grep -c ^///$
Úselo ^//$
para obtener el número de interpretaciones.
Respuesta3
Creo que estás buscando un poco de magia de "hallazgo". Correr
find /music -mindepth 2 -maxdepth 2 -type d | wc -l
debería darte el número de álbumes de tu colección. Correr
find /music -mindepth 1 -maxdepth 1 -type d | wc -l
debería devolver el número de artistas.