Necesita ayuda con el comando de cambio de nombre en Linux

Necesita ayuda con el comando de cambio de nombre en Linux

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 $2y $1son 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 -npara cambiar el nombre de los archivos que se utilizan para las pruebas.

información relacionada