Supponiamo di avere cinque file mp3:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
05-trackxyz.mp3
Ora do un rapido ascolto ai file (solo mplayer su console farà il trucco) e scopro che le tracce sono nell'ordine sbagliato . 05 è in realtà 02 e il resto dovrà essere rinominato. Quindi prima farò un rinominazione temporanea:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
00-trackxyz.mp3
Ora abbiamo bisogno di un "turno": 02 dovrebbe diventare 03, 03 dovrebbe diventare 04 e 04 dovrebbe diventare 05. Per ridurre al minimo la confusione, ex-05 (ora 00) verrà appena pubblicato in mv
seguito.
Il mio approccio era questo: (perl rename
, di Larry Wall, predefinito qui su Debian)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/' *
così come (più tardi, dopo alcuni altri RTFM)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/e' *
Nessuno di loro ha funzionato, soprattutto perché il /e[val]
modificatore non accetta nient'altro che valutazioni e genererà un errore quando si tenta di combinare le valutazioni con le stringhe. Il bash
grado di farlo bene, ad esempio, foo$((1+6))
saranno valutate al foo7
.
Quindi, come posso fare questo (preferendo una sola riga, non intendendo scrivere un intero script autonomo solo per questo)?