Nehmen wir an, ich habe fünf MP3-Dateien:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
05-trackxyz.mp3
Jetzt höre ich mir die Dateien kurz an (nur mplayer auf der Konsole reicht aus) und stelle fest, dass die Titel in der falschen Reihenfolge sind . 05 ist eigentlich 02 und der Rest muss umbenannt werden. Also werde ich zuerst eine temporäre Umbenennung durchführen:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
00-trackxyz.mp3
Jetzt brauchen wir eine "Verschiebung": 02 sollte 03 werden, 03 sollte 04 werden und 04 sollte 05 werden. Um Verwirrung zu minimieren, wird ex-05 (jetzt 00) erst später mvbearbeitet.
Mein Ansatz war folgender: (Perl rename, von Larry Wall, Standard hier bei Debian)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/' *
sowie (später, nach etwas mehr RTFM'ing)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/e' *
Keiner von ihnen hat funktioniert, insbesondere weil der /e[val]Modifikator nichts anderes als Auswertungen akzeptiert und einen Fehler auslöst, sobald Sie versuchen, die Auswertungen mit Zeichenfolgen zu kombinieren. Das bashkann es ganz gut, zB foo$((1+6))wird ausgewertet foo7.
Wie kann ich das tun (einzeilig bevorzugt, nicht beabsichtigt, ein ganzes eigenständiges Skript nur dafür zu schreiben)?