¿Cómo puedo contar la cantidad de carpetas en un nivel de carpeta específico usando la terminal Linux?

¿Cómo puedo contar la cantidad de carpetas en un nivel de carpeta específico usando la terminal Linux?

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 %qformato 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 musicestá en el directorio actual. Si el musicdirectorio es realmente /music, coloque un /delante de musicen todos los comandos anteriores. En caso contrario, ponga delante el camino que alcance music.

Respuesta2

Puede utilizar findpara 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.

información relacionada