renomeia vários arquivos com nome exclusivo [closed]

3

Eu tenho uma lista delimitada por tabulação de centenas de nomes no seguinte formato

old_name    new_name
apple       orange
yellow      blue

Todos os meus arquivos têm nomes exclusivos e terminam com a extensão * .txt e estão no mesmo diretório. Eu quero escrever um script que irá renomear os arquivos, lendo minha lista. Então apple.txt deve ser renomeado como orange.txt. Eu pesquisei por aí, mas não consegui encontrar uma maneira rápida de fazer isso.Eu posso mudar um arquivo de cada vez com 'renomear' ou usar perl "perl -p -i -e '/// g' * .txt ", e alguns arquivos com sed, mas eu não sei como posso usar minha lista como entrada e escrever um script de shell para fazer as alterações para todos os arquivos em um diretório. Eu não quero escrever centenas de comandos rename para todos os arquivos em um script de shell. Qualquer sugestão será muito bem vinda!

    
por psaima 11.10.2012 / 10:22

1 resposta

2

Isso deve funcionar como um bash razoavelmente padronizado

#!/bin/bash
while read line
    do
        set -- $line
        echo renaming "$1.txt to $2".txt
        mv "$1".txt "$2.txt"

    done <input.file
    
por 11.10.2012 / 11:09