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 😉