while read line ; do
mv $line
done < data_lat_long.txt
Redirecione o conteúdo de data_lat_long.txt para um loop while que usa read para ler em cada linha do arquivo e para cada linha atribuí-lo a uma variável chamada $line . Em seguida, execute mv com o conteúdo de $line como um argumento (que é de e para as partes que você especificou no arquivo data_lat_long.txt ). Continue em loop até o final do arquivo.
Observe que isso implicitamente espera que nenhum nome de arquivo no seu data_lat_long.txt contenha espaços (para que haja apenas duas colunas).
Se os arquivos tiverem espaços, sugiro um separador de vírgula no seu arquivo:
1,space file1
2,space file2
3,space file3
e, em seguida, use:
while IFS=',' read -a files
do
mv "${files[0]}" "${files[1]}"
done < list.txt
Isso faz uso da opção -a de read , que atribui o texto separado por IFS (neste caso, vírgula) a uma matriz chamada $files . Em seguida, indexamos os vários elementos no mv e citamos os argumentos com aspas duplas "" . Assim, o valor da matriz é expandido na execução do comando mv e , de forma que o espaço no arquivo não seja visto como separador de argumentos por mv . mv 1 space file1 não faz a mesma coisa que mv "1" "space file1" . O comando anterior tenta mover arquivos / diretórios chamados 1 e space para um diretório chamado file1 .