Wie kann ich mithilfe eines Linux-Terminals die Anzahl der Ordner in einer bestimmten Ordnerebene zählen?

Wie kann ich mithilfe eines Linux-Terminals die Anzahl der Ordner in einer bestimmten Ordnerebene zählen?

Ich habe einen sehr speziellen Verzeichnisbaum in meiner Musikbibliothek. Ich möchte alle Alben zählen und dabei alle Unterverzeichnisse ausschließen.

Nehmen wir beispielsweise diesen Verzeichnisbaum:

/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

Ich möchte, dass der Befehl „4“ zurückgibt.

Grundsätzlich möchte ich, dass der Befehl die Anzahl der Alben zurückgibt, oder Bonuspunkte, wenn er „2“ Interpreten und „4“ Alben zurückgibt.

(Und doppelte Bonuspunkte, wenn zusätzlich die Interpreten und Alben aufgeführt werden.)

Wie kann ich dies am einfachsten tun?

Antwort1

Um die vier Alben anzuzeigen:

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

So zählen Sie sie:

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

Das %qFormat wird hier verwendet, um zu verhindern, dass Albumnamen mit Zeilenumbrüchen mehrfach gezählt werden.

Um die Künstler zu sehen:

$ ls -d1 music/*/
music/Davis, Miles/
music/Hendrix, Jimi/

So zählen Sie die Anzahl der Künstler:

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

Die obigen Befehle gehen davon aus, dass musicsich im aktuellen Verzeichnis befindet. Wenn das musicVerzeichnis tatsächlich ist /music, setzen Sie in allen obigen Befehlen ein /vor „ . Andernfalls setzen Sie den Pfad, der zu „ führt“, vor „.musicmusic

Antwort2

Mit können Sie findalle Unterverzeichnisse auflisten. Dann zählen Sie einfach die Anzahl der Schrägstriche pro Zeile und geben an, wie oft drei davon vorkommen:

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

Verwenden Sie ^//$dies, um die Anzahl der Interpretationen zu ermitteln.

Antwort3

Ich glaube, Sie suchen nach ein wenig „Finden“-Magie. Laufen

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

sollte Ihnen die Anzahl der Alben in Ihrer Sammlung anzeigen.

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

sollte die Anzahl der Künstler zurückgeben.

verwandte Informationen