
Tengo varios archivos con estos nombres:
file1, A.ext
file1, The.ext
Necesito cambiar sus nombres como
A file1.ext
The file1.ext
Es decir, necesito mover el artículo del final al principio borrando la coma. ¿Como podría hacerlo?
He investigado el comando de cambio de nombre pero no tengo experiencia con perl regex, se me ocurrió este comando ridículo que no funciona, lo dejo para mostrar mi desesperanza:
rename 's/(?<=[A-Z a-z \s]*),\sA//' *
Respuesta1
Necesitarías tener:
rename -n 's/^([^,]*),\s*(.*)\.ext$/$2 $1.ext/' *
Esto
^([^,]*),
coincide con todo menos una coma hasta la primera coma vista desde el principio del nombre del archivo.Esto
\s*(.*)\.ext$
coincide con cero o más espacios en blanco seguidos de cualquier cosa y termina con.ext
.El
$2
y$1
son referencias anteriores al(.*)
y([^,]*)
respectivamente.
cambiará el nombre de la siguiente manera:
rename(a single file,.ext, a single file.ext)
rename(a single file, some thing.ext, some thing a single file.ext)
rename(file1, A.ext, A file1.ext)
rename(file1, the.ext, the file1.ext)
P,s: eliminar -n
para cambiar el nombre de los archivos que se utilizan para las pruebas.