Gegeben sind MP3 Daten, mit sehr sinnigen Dateinamen wie:

track_01.mp3

track_02.mp3

track_03.mp3

[…]

Glücklicherweise sind die ID3 Tags gesetzt. Was liegt also näher, als die Dateien mit Hilfe von id3info umzubennen. Nach einigem fummeln und probieren, habe ich folgendes zusammen gesetzt:

for i in *.mp3; do mv $i "${*##}`id3info $i | egrep '(TPE1|TIT2)' | cut -d: -f 2 | tr -d [:cntrl:] | cut --complement -b 1 \ |sed "s/ /_/g"`.mp3"; done

Es gibt sicher weitaus bessere Wege, das mit der Bash zu lösen, aber dennoch bin ich Stolz auf diese Lösung. Sozusagen quick and really dirty 😉

Das Einzige Problem, was ich jetzt noch nicht lösen konnte, ist es „find“ einzubauen, sodass ich ihn auf einen Ordner anwenden kann. Wenn ich es mit … :

for i in `find /order/mit/mp3 -name "*.mp3"` do mv $i "${*##}`id3info $i | egrep '(TPE1|TIT2)' | cut -d: -f 2 | tr -d [:cntrl:] | cut --complement -b 1 \ |sed "s/ /_/g"`.mp3"; done

… probiere, dann verschiebt er die Dateien in den Arbeitsordner (pwd).

In ein paar Monaten, löse ich solche Aufgaben in Perl 🙂 Bitte kommt nicht auf die Idee, eine Perlösung hier rein zustellen. Das will ich selbst lösen 😉