Como alterar os nomes dos arquivos em um diretório para novos nomes contidos em um arquivo?

Como alterar os nomes dos arquivos em um diretório para novos nomes contidos em um arquivo?

Tenho um diretório cheio de nomes de arquivos que precisam ser alterados. Não preciso simplesmente renomear um sufixo ou prefixo, mas sim renomear completamente os arquivos.

Eu tenho os novos nomes de arquivos em um arquivo chamado new_names.

Qual comando posso usar para ler os nomes contidos em new_names e renomear os arquivos em um diretório?

Responder1

Você pode usar isso para gerar uma lista de mvcomandos:

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

Se parecer bom, você pode executá-lo com:

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

informação relacionada