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; do
Isso inicia um loop
while
. O loop continua enquanto a entrada estiver disponível. Para cada linha de entrada, dois parâmetros são lidos:file1
efile2
. -
mv -n -- "$file1" "$file2"
Isso move
file1
parafile2
.A opção
-n
protege 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-
. -
done
Isso sinaliza o fim do loop
while
. -
<inputfile
Isso informa ao loop
while
para obter sua entrada de um arquivo chamadoinputfile
.