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
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!
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