
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 %q
Format 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 music
sich im aktuellen Verzeichnis befindet. Wenn das music
Verzeichnis tatsächlich ist /music
, setzen Sie in allen obigen Befehlen ein /
vor „ . Andernfalls setzen Sie den Pfad, der zu „ führt“, vor „.music
music
Antwort2
Mit können Sie find
alle 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.