¿Cómo cambiar los nombres de los archivos en un directorio a nuevos nombres contenidos en un archivo?

¿Cómo cambiar los nombres de los archivos en un directorio a nuevos nombres contenidos en un archivo?

Tengo un directorio lleno de nombres de archivos que deben cambiarse. No necesito simplemente cambiar el nombre de un sufijo o prefijo, sino cambiar completamente el nombre de los archivos.

Tengo los nuevos nombres de archivos contenidos en un archivo llamado new_names.

¿Qué comando puedo usar para leer los nombres contenidos en new_names y cambiar el nombre de los archivos en un directorio?

Respuesta1

Puede usar esto para generar una lista de mvcomandos:

paste /path/to/new_names <(ls /path/to/files | grep -v new_names) | awk '$2 !~ /^$/ {print "mv " $2,$1}'

Si se ve bien, entonces puedes ejecutarlo con:

cd /path/to/files
$( paste /path/to/new_names <(ls /path/to/files | grep -v new_names) | awk '$2 !~ /^$/ {print "mv " $2,$1}' )

información relacionada