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 rename
comando perl:
Estás bastante cerca del último comando. rename 's/(0.) /$1 - /' *.mp3
trabajarí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 rename
comando?
$ 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.mp3
será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.mp3
en 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]\ [^-]*