¿Cómo puedo usar el comando de cambio de nombre para corregir estos nombres de archivos?

¿Cómo puedo usar el comando de cambio de nombre para corregir estos nombres de archivos?

Estoy intentando cambiar archivos que parecen

01 Track name.mp3

en

01 - Track name.mp3

Hasta ahora mis intentos inútiles fueron

rename '0. ' '$&- ' *.mp3
rename 's/0. /$&- /' *.mp3
rename '/0. /' '/$&- /' *.mp3
rename 's/0.\ /$&-\ /' *.mp3
rename 's/0.\ /$1-\ /' *.mp3

Respuesta1

Asumiendo el renamecomando perl:

Estás bastante cerca del último comando. rename 's/(0.) /$1 - /' *.mp3trabajaría. No es necesario escapar del espacio, no tienen un significado especial en las expresiones regulares (sí lo tienen en los nombres de archivos, pero eso no importa aquí) y necesitas paréntesis alrededor de la parte que deseas reutilizar.

Respuesta2

¿Tiene que usar el renamecomando?

$ ls
01 Track name.mp3  02 Track name.mp3  03 Track name.mp3

$ for a in *.mp3
> do
> mv -i "$a" "${a%% *} - ${a#* }"
> done

$ ls
01 - Track name.mp3  02 - Track name.mp3  03 - Track name.mp3

Respuesta3

$ rename 's/^(\d\d)\s*/$1 - /' *.mp3

Esto cambiará el nombre de todos los archivos MP3 que tengan un dígito doble al comienzo de sus nombres de archivo, insertando espacio-guión-espacio después de los dígitos. Así 01 Track name.mp3será01 - Track name.mp3

A juzgar por sus propios intentos, todos los nombres de archivos comienzan con el dígito cero y parece que desea insertar un guión.directamentedespués de los dígitos seguido de un espacio:

$ rename 's/^(0\d)\s*/$1- /' *.mp3

Esto se transforma 01 Track name.mp3en 01- Track name.mp3.

Respuesta4

Hay dos (tres) comandos de borrado: uno que es parte delutilidad-linuxpaquete que se instala en todos los sistemas Linux no integrados y uno (dos variantes en realidad) basado en Perl. Ver¿Qué pasa con todos los cambios de nombre: prenombre, cambio de nombre, cambio de nombre de archivo?

El comando util-linux es muy básico, pero te encuentras en la rara situación en la que puede hacer lo que quieres. Reemplace el primer espacio por espacio-guión-espacio:

rename ' ' ' - ' [0-9][0-9]\ [^-]*

información relacionada