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 mv
bearbeitet.
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 bash
kann 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)?