Tente:
while read -r file1 file2; do mv -n -- "$file1" "$file2"; done <inputfile
Isso pressupõe que os nomes dos arquivos em cada linha no arquivo de entrada são separados por espaços. Isso, obviamente, só funciona se os nomes dos arquivos não contiverem espaços. Se sim, então você precisa de um formato de entrada diferente.
Como funciona
-
while read -r file1 file2; doIsso inicia um loop
while. O loop continua enquanto a entrada estiver disponível. Para cada linha de entrada, dois parâmetros são lidos:file1efile2. -
mv -n -- "$file1" "$file2"Isso move
file1parafile2.A opção
-nprotege você de sobrescrever qualquer arquivo no destino. Claro, se for sua intenção sobrescrever arquivos, remova essa opção.A string
--sinaliza o final das opções. Isso protege você contra problemas caso qualquer um dos nomes de arquivos inicie com-. -
doneIsso sinaliza o fim do loop
while. -
<inputfileIsso informa ao loop
whilepara obter sua entrada de um arquivo chamadoinputfile.