Supongamos que tengo cinco archivos mp3:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
05-trackxyz.mp3
Ahora escucho rápidamente los archivos (solo mplayer en la consola hará el truco) y descubro que las pistas están en el orden incorrecto . 05 es en realidad 02 y el resto deberá ser renombrado. Así que primero haré un cambio de nombre temporal:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
00-trackxyz.mp3
Ahora necesitamos un "turno": 02 debería convertirse en 03, 03 debería convertirse en 04 y 04 debería convertirse en 05. Para minimizar la confusión, ex-05 (ahora 00) será mv
editado más tarde.
Mi enfoque fue este: (Perl rename
, por Larry Wall, predeterminado aquí en Debian)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/' *
así como (más tarde, después de un poco más de RTFM)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/e' *
Ninguno de ellos trabajó, sobre todo porque el /e[val]
modificador no acepta ninguna otra cosa , pero las evaluaciones, y generará un error una vez que se intenta combinar las evaluaciones con cuerdas. El bash
puede hacerlo bien, por ejemplo foo$((1+6))
, será evaluado foo7
.
Entonces, ¿cómo puedo hacer esto?