Script para renomear arquivos usando arquivos de texto contendo nomes de arquivos alternativos

0

Eu tenho uma pasta contendo milhares de arquivos:

file1.jpeg
file2.jpeg
file3.jpeg

etc.

Eu tenho um arquivo de texto contendo uma lista de novos nomes de arquivos que desejo substituir:

old_filename     new_filename
file3.jpeg       my_dog.jpeg
file1.jpeg       my_cat.jpeg
file2.jpeg       my_goat.jpeg

etc.

Estou procurando um script para renomear todos os arquivos na pasta usando os novos nomes de arquivos (ou acrescentar o novo nome como um prefixo ao nome do arquivo original).

Acho que preciso de algo que pesquise a pasta, compare o nome ao arquivo de texto e renomeie o arquivo de acordo.

As listas e os arquivos não são classificados de forma alguma.

    
por speld_rwong 22.12.2015 / 03:22

1 resposta

2

Primeiro, verifique se você tem um backup antes de tentar isso.

Seus exemplos, felizmente, não têm espaços em oldname e newnames, e nenhuma menção a subdiretórios (todos no mesmo diretório), portanto, se todas as linhas da sua lista tiverem essa aparência

  1. tem rename_rules.txt no mesmo diretório que suas imagens
  2. cd neste diretório
  3. executar:

     eval "$(sed 's/^/mv /g' rename_rules.txt )"
    
    • em que rename_rules.txt contém apenas pares de oldname newname em cada linha
    • sed é usado para converter seu rename_rules em mv oldname newname
    • eval é então usado para executá-lo, assim o arquivo é renomeado

aviso de isenção: nenhuma validação ou verificação de arquivo está embutida neste simples script curto, e é por isso que eu disse que a primeira coisa a fazer é ter um backup caso um dos seus pares de renomear oldname newname aconteça conter um erro, então você pode pelo menos começar de novo a partir do backup

    
por 22.12.2015 / 03:56