Also meiner Meinung nach sollte das alles mit sed möglich sein. Hab leider gerade keine Zeit, daher nur ne vorläufige Lösung:
for i in *.ogg; do mv $i $(echo $i | sed 's/\([0-9]*\)[^-]*-_\(.*\)/\1\ -\ \2/' | sed 's/_/ /g'); done
Die wandelt das Ganze schonmal so um wie Du's brauchst, nur das Großschreiben der ersten Buchstaben kann's noch nicht.
Wenn sich bis heute Abend noch kein sed Guru gemeldet hat, setz ich mich nochmal dran 🙂
Bis denne!
*edit sagt: Fehler behoben, Interpret darf kein '-' enthalten
*edit2:
Wie angedroht, da bin ich wieder. Da sich kein sed Guru gemeldet hat, übernehm ich das wohl mal eben... *Ärmel hochkrempel* Es ist bißchen unübersichtlich geworden, aber so sollte es genau das tun, was Du haben willst. Ich schreibe mal nur das sed Kommando, die for Schleife steht ja noch oben:
sed \
-e 's/\([0-9]*\)[^-]*-_\(.*\)/\1\ -\ \2/' \
-e 's/_/ /g' \
-e 's/\b\(\w*\)\b/\u\1/g' \
-e 's/\.Ogg$/\.ogg/'
Man kann das natürlich auch in eine Zeile schreiben, dafür dann einfach die '\' am Ende jeder Zeile weglassen.
Erklärung:
- Der erste Ausdruck entfernt den Interpreten (der immer noch kein '-' enthalten darf!) sowie die '_' vor dem Titel.
- Der zweite Ausdruck ersetzt die übrig gebliebenen '_' im Dateinamen durch Leerzeichen.
- Der dritte Ausdruck macht den ersten Buchstaben jedes Wortes groß (tut bei der Track Nummer nicht weh), dazu zählt aber auch das '.ogg' am Ende. Wenn es Dir egal ist, ob Deine Dateien mit '.ogg' oder '.Ogg' enden, kannst Du den vierten Ausdruck weglassen, denn
- der vierte Ausdruck verwandelt die Dateiendung wieder komplett in Kleinbuchstaben.
So, viel Spaß mit Deinen umbenannten Dateien. Ich hoffe, ich hab mir die Arbeit nicht umsonst gemacht. Naja, ganz umsonst wird's net gewesen sein, Übung macht ja schließlich den Meister :lol:
Schöne Grüße