Ich habe derzeit Probleme mit einigen Musikordnern. Ich habe mich einmal entschlossen, sie nach dem Muster zu benennen : artist - album - year
. Ich habe heute festgestellt, dass dies kein kluger Schachzug war, und möchte jetzt meine Verzeichnisse nach dem Muster benennen: year - artist - album
Sie werden dann in aufsteigender Reihenfolge angezeigt, wenn sie aufgelistet werden.
Ich habe angefangen, die Umbenennung von Hand vorzunehmen, aber mit ungefähr 700 Ordnern muss es einen einfacheren Weg geben. Ich habe es versucht, gprename
aber ich bin nicht so gut in Regex und Bash-Skripten ...
Gibt es jemanden, der mir helfen könnte, meine armen Fingerspitzen zu schonen?
Einige Beispiele:
Aes Dana - Memory Shell - 2004
Anja Schneider & GummiHz - Back To Back (Remixes Part 2) - 2009
würde werden
2004 - Aes Dana - Memory Shell
2009 - Anja Schneider & GummiHz - Back To Back (Remixes Part 2)
BEARBEITEN: Einige Künstler- und Albumnamen haben Sonderzeichen wie And.Id
oder Kool & The Gang
. Obwohl jedes Verzeichnis -
als Trennzeichen hat.
quelle
-
?Antworten:
Angenommen, Sie haben Zugriff auf Perl
rename
(allgemein verfügbar in Ubuntu - danke an @Serg für die Klärung des Unterschieds. Rufen/usr/bin/rename
Sie im Zweifelsfall an und Sie sollten das richtige erhalten), können Sie Folgendes verwenden:-n
Nach dem Testen entfernen , um die Verzeichnisse tatsächlich umzubenennen. Dies setzt voraus, dass alle Alben zwischen 1000 und 9999 liegen. Wahrscheinlich vernünftig ...Erläuterung
s/old/new
ersetzenold
durchnew
(.*)
Speichern Sie eine beliebige Anzahl von Zeichen, auf die$1
später verwiesen werden soll(\d{4})\/
Speichern Sie vier Ziffern am Ende der Zeile, um$2
später darauf zu verweisen .*/
Alle Verzeichnisse abgleichen (keine Dateien - danke an @muru für die Hilfe!)quelle
*/
nur, um Verzeichnisse abzugleichen .mksh
ein eingebautes genannt habenrename
. Es reicht aus, es durch einen vollständigen Pfad zu ersetzen oderprename
die Perl-Umbenennungrename
wird nicht "manchmal genanntprename
", aber anscheinend sind es zwei "Zweige" desselben Skripts, einer, der nicht gepflegt wird von Debian und dem anderen. Also ja. . . Es ist eine Menge Chaos - einige Shells haben ihre eigenenrename
, Perl-Pakete haben ihre eigenenrename
und Debian selbst bietet separate Paketerename.ul
in unix.stackexchange.com/q/229230/21167 verwiesen wirdEin einfaches Python-Skript kann folgende Aufgaben ausführen:
Skriptinhalt:
So funktioniert das:
*/
nur Verzeichnisse als Argumente für das Skript-
Zeichen. Der neue Dateiname besteht aus Teilen, die wir extrahiert haben.move()
Funktion vonshutils
Modul benennt die Verzeichnisse tatsächlich umBeachten Sie die Verwendung:
./rename_dirs.py */
quelle