Anzeige
Audio & VideoMeinung

Warum, Thalia? Blöde Hörbuch-MP3s umbenennen

Ihr habt Hunderte Hörbuch-Schnippsel mit miesen Dateinamen? Weg damit!

Es war eine freudige Erkenntnis: Ich kann bei Thalia doch tatsächlich Hörbücher als MP3s kaufen! Kein DRM, keine verdammte App, einfach nur simple, universelle MP3-Dateien. Danke! Aber die Dateinamen? Nummer, Gesamtzahl, ISBN, unbestimmte Zeichenkette – insgesamt 34 Zeichen lang. Das mag innerhalb von Bibliotheken okay sein, die bereiten die Daten anhand der Tags auf. Ich nutze aber meist Datei-basierte Player und da sind diese Monstren einfach nervig. Und da es sich um 188 Dateien handelt, kommt für das Umbenennen nur die gute alte Stapelverarbeitung in Frage.

Anzeige

Der Fünfte Elefant, die Zahlenkolonne

Hier mal als Beispiel ein Dateiname aus dem Thalia-Download: 001_188_9783837111279_DESW10871111.mp3 Den hinteren Part habe ich verändert, weil ich nicht weiß, was genau das ist ;) Der Part in der Mitte ist die ISBN und es handelt sich offensichtlich um Datei 1 von 188.

Mir persönliche wäre ein Namensschema wie 001-elefant.mp3 wesentlich lieber – kurz und aussagekräftig. Und da gibt es nun diverse Möglichkeiten, das zu tun, natürlich auch mit grafischen Tools. Mir ist die Kommandozeile deutlich lieber: Sie ist schon da, ist super flexibel und bietet standardmäßig mehrere Möglichkeiten, die Aufgabe zu erledigen – ganz ohne explizites Umbenennen-Tool.

Anzeige

Genutzt habe ich folgenden Aufruf:

ls *.mp3 | nl -n rz | cut -c4- | while read n f; do mv "$f" "$n-elefant.mp3"; done

Ich höre schon das Stöhnen ;) Im Grunde ist es super simpel, lediglich die nl- und cut-Anweisungen sind ein wenig tricky. Aber Schritt für Schritt, für mehr Übersicht mit einem kürzeren Dateinamen:

  • ls listet alle MP3-Dateien auf -> „beispiel.mp3“
  • nl nummeriert jede Zeile 6-stellig mit dem Stil (-n) „rechtsbündig mit führenden Nullen“ -> „000001 beispiel.mp3“
  • cut entfernt die ersten 3 führenden Nullen -> „001 beispiel.mp3“
  • while liest alle Zeilen ein, mit dem Dateinamen als Variable $f und der Nummer als Variable $n.
  • mv verschiebt die jeweilige Datei $f (beispiel.mp3) nach $n-elefant.mp3 (001-elefant.mp3).

Bei nl ist es gar nicht soo tricky, die Hilfe ist kurz und gibt diese Option direkt an. Die cut-Syntax ist gewöhnungsbedürftig: Über „-c“ wird eine Liste mit Zeichenpositionen angegeben, hier eben „4 bis Ende“. Folglich werden die ersten drei Zeichen entfernt. Was also würde wohl

echo Hallo Welt | cut -c1,7

ergeben? Genau: HW natürlich.

Geht das nicht komplizierter, bitte?

Aber Hallo! Alles geht immer noch komplizierter, könnt Ihr haben, sed schreit doch immer nach Aufmerksamkeit. Oben habe ich einen komplett neuen Namen erzeugt, mit einer per nl erstellten Nummerierung. Hier wird nun der bestehende Dateiname auf die ersten drei Ziffern und die Dateiendung beschränkt und dazwischen kommt wieder „-elefant“. Los geht’s:

for f in $(ls *.mp3); do mv "$f" "$(echo $f | sed ' s/\([0-9]\{3\}\).*\(\.mp3\)/\1-elefant\2/ ')"; done

Und wieder Schritt für Schritt:

  • for verarbeitet alle Dateien $f, die ls ausgegeben hat.
  • mv verschiebt wieder alle Dateien $f nach dem Ergebnis des sed-Durchlaufs:
  • sed sucht nach genau 3 Ziffern und speichert sie durch die runden Klammern in der Variable \1 ->
  • sed sucht nach einer beliebigen Zeichenfolge und tut nichts damit ->
  • sed sucht nach der Zeichenfolge .mp3 und speichert sie durch die runden Klammern in Variable \2 ->
  • sed ersetzt den Originaldateinamen durch \1-elefant\2 -> 001-elefant.mp3

Okay, das ist wohl eher Fingerübung als eine wirklich supi dupi tolle Lösung für die Ewigkeit ;)

Und auch wenn Lösung 1 für mich persönlich die schnellste war, empfehlen würde ich Euch freilich das Tool rename, das diese Aufgabe viel schneller und einfacher löst – wie, seht Ihr hier. Ich würde es jedoch jederzeit wieder mit der while-Schleife machen: Hier unter Windows habe ich rename nicht installiert und weiß auswändig nicht mal, ob es das überhaupt als Windows-Port gibt. Zudem sind mir ls, nl, cut, while und mv vertraut, weil ich sie ständig für irgendwas brauche. rename ist eher so ein Einmal-pro-Jahr-Tool und da müsste ich immer wieder gucken, wie es genau funktioniert.

Egal, eigentlich wollte ich auch nur über die blöden Dateinamen von Thalia meckern. Stört wahrscheinlich kein Schwein, oder?! Naja, habter wenigstens noch was gelernt.

Und wenn Ihr Spaß an der Kommandozeile habt, schaut mal in unsere hauseigene Terminal-Hilfe cli.help – Hilfe auf Deutsch direkt im Terminal.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.helpTestweise bei Mastodon

Empfohlene Beiträge

3 Kommentare

  1. Unter Windows würde ich den Antrenamer und MP3Tag verwenden. Das sind jedoch grafische Programme.

    Mit Antrenamer kann man die Dateien umbenennen und mit MP3Tag kann man anhand des neuen Dateinamens dann die Tags in den MP3 Dateien anpassen und auch ein Cover hinzufügen, sofern die Dateien von z.B. Thalia nicht schon vernünftig mit Tags versehen wurden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"