Ich möchte im Grunde davon ausgehen:
.
├── Alan Walker
│ ├── Different World
│ │ ├── 01 Intro.mp3
│ │ ├── 02 Lost Control.mp3
│ │ └── cover.jpg
│ └── Same World
│ ├── 01 Intro.mp3
│ └── 02 Found Control.mp3
├── Aurora
│ └── Infections Of A Different Kind Step 1
│ ├── 01 Queendom.lrc
│ ├── 02 Forgotten Love.lrc
│ └── 03 Gentle Earthquakes.mp3
└── Guns N' Roses
└── Use Your Illusion I
├── 01 Right Next Door To Hell.lrc
├── 01 Right Next Door To Hell.mp3
├── 02 Dust N' Bones.lrc
└── 02 Dust N' Bones.mp3
dazu:
.
├── Alan Walker - Different World
│ ├── 01 Intro.mp3
│ ├── 02 Lost Control.mp3
│ └── cover.jpg
├── Alan Walker - Same World
│ ├── 01 Intro.mp3
│ └── 02 Found Control.mp3
├── Aurora - Infections Of A Different Kind Step 1
│ ├── 01 Queendom.lrc
│ ├── 02 Forgotten Love.lrc
│ └── 03 Gentle Earthquakes.mp3
└── Guns N' Roses - Use Your Illusion I
├── 01 Right Next Door To Hell.lrc
├── 01 Right Next Door To Hell.mp3
├── 02 Dust N' Bones.lrc
└── 02 Dust N' Bones.mp3
Keine der vorhandenen Lösungen, die ich finden konnte, beinhaltete das Umbenennen des Verzeichnisses selbst. Es wäre großartig, dies mit zmv tun zu können, aber ich kann nicht herausfinden, wie.
easytag
Sie können dies tun, aber nur für Audiodateien - ich glaube nicht, dass es Cover usw. verschieben wirdAntworten:
Zsh
Ungetestet:
In der zweiten Zeile werden alle leeren Verzeichnisse entfernt, auch diejenigen, die zuvor keine Datei hatten. Es ist möglich, dies mit einem benutzerdefinierten
mv
Wrapper zu umgehen, der aufzeichnet, aus welchen Verzeichnissen Dinge verschoben werden.Beachten Sie, dass hierdurch symbolische Links zu Verzeichnissen im aktuellen Verzeichnis durchlaufen werden.
Linux-Dienstprogramm zum Umbenennen
Ungetestet.
Beachten Sie, dass dies symbolische Links zu Verzeichnissen im aktuellen Verzeichnis und in seinen Unterverzeichnissen durchläuft. In der zweiten Zeile werden alle leeren Verzeichnisse entfernt, auch diejenigen, die zuvor keine Datei hatten.
Perl benennt das Skript um
Ungetestet.
Beachten Sie, dass dies symbolische Links zu Verzeichnissen im aktuellen Verzeichnis und in seinen Unterverzeichnissen durchläuft. In der zweiten Zeile werden alle leeren Verzeichnisse entfernt, auch diejenigen, die zuvor keine Datei hatten.
Hier ist ein komplexerer Ansatz, bei dem nur Verzeichnisse entfernt werden, aus denen etwas umbenannt wurde. Wieder ungetestet.
quelle
So etwas vielleicht?
Dies durchläuft alle Verzeichnisse der obersten Ebene im aktuellen Verzeichnis (die Bandnamen). Für jedes dieser Verzeichnisse werden die Unterverzeichnisse (die Albumnamen) durchsucht. Für jedes Paar aus Bandname und Albumname wird ein neues Verzeichnis erstellt und die Dateien aus dem Unterverzeichnis werden in dieses Verzeichnis verschoben. Die Album-Unterverzeichnisse werden entfernt, wenn sie verarbeitet wurden, ebenso wie die ursprünglichen Band-Top-Level-Verzeichnisse.
Das
rmdir
Aufrufe schlagen fehl, wenn ein Verzeichnis versteckte Dateinamen enthält oder wenn eines der neuen Verzeichnisse nicht erstellt werden konnte.Dies ist völlig ungetesteter Code. Führen Sie es auf einer gesicherten Kopie Ihrer Dateien aus.
quelle
Haben Sie strategisch überlegt, die aktuelle Struktur beizubehalten und Links für die gewünschte neue Struktur zu erstellen, anstatt Dateien zu verschieben?
Taktisch sieht ein Muster, das die Arbeit erledigt, so aus:
find
Findet alle Verzeichnisse genau zwei Ebenen tief vom aktuellen Arbeitsverzeichnis entfernt, das das Verzeichnis sein sollte, das die Bänder enthält. Daher sind die Albumnamen unter den Bandnamen zwei Ebenen tief. 1xargs
verbraucht jeden Pfad, der ein Album enthält, und ruft das Inline-Bash-Skript auf.bash -c '...'
nimmt den Albumpfad als erstes Argument und teilt diesen Pfad in zwei Teile: die Band ($b
) und das Album ($a
). Schließlich setzt das Skript die Namen wieder in das gewünschte Format und verknüpft den neuen Verzeichnisnamen mit dem ursprünglichen Verzeichnis.Beachten Sie, dass in diesem Beispiel die Links in demselben Verzeichnis erstellt werden, von dem aus Sie starten. Dort befinden sich auch die Bandnamen.
Sie können und sollten die
ln
oben beschriebene Strategie an Ihre Absicht anpassen.mv
mit den richtigen Pfaden, wenn Sie physisch neu anordnen möchten oderln
wenn Sie eine bequeme "Ansicht" über die Medien erstellen möchten. Die wichtigen Teile des Bash-Skripts sind:$b
der Bandname. Zitieren Sie es immer :"$b"
.$a
der Albumname. Zitieren Sie es immer :"$a"
.$1
der physische Pfad zum Albumverzeichnis. Zitieren Sie es immer :"$1"
.1 Ich glaube, sie
m{ax,in}depth
werden von GNU und einigen BSD unterstütztfind
, aber nicht von POSIX. In diesem Fall sollten Sie sich auf*/*
oder ähnliche Muschelturnen verlassen.quelle