Solía doble redirección con nuevos descriptores de archivo para cambiar el nombre de todos los archivos FLAC de un directorio de acuerdo con un "filelist.txt" dada esta manera:
while read -u 9 filename ; do
read -u 8 newname
echo mv "$filename" "$newname"
done 9<<<"$(ls -1 *flac)" 8< filelist.txt
Cada nombre de archivo .flac en el directorio pasa por el descriptor de archivo 9 a la variable "nombre de archivo" mientras está en el sam e iteración, cada línea del filelist.txt pasa por el descriptor 8 de archivo a la variable "newname".
Sí, uno de los nuevos descriptores de archivos podría haberse evitado y simplemente utilizar la entrada estándar predeterminada (eliminando "-u 9" y "9"), pero me acostumbré a no usar stdin para esos; De esta forma, puede incluir una instrucción de lectura dentro del ciclo de interactividad o control, y no se completará con los datos redirigidos.
El eco es para "prueba solamente" y se debe eliminar después de aprobar la operación.
¿Tiene algún criterio para mapear los archivos de la carpeta en cadenas? Estoy preguntando esto porque: si usas let para decir 'ls' para obtener los archivos, serás ordenado alfabéticamente, pero eventualmente, puedes tener un mapeo diferente' filename_X => string_Y' –