Renomear vários arquivos no Linux
Diante de um ocasião em que eu tinha que modificar os nomes de vários arquivos ao mesmo tempo. Procurei saber como faria isso automaticamente (eram muitos arquivos).Achei vários scripts feitos por pessoas muito inteligentes(ou que sabiam copiar de alguem, mas isso não é problema meu) na internet.
Testei vários e vou colocar aqui as várias formas de fazer isso.
1. Mudar somente a extensão dos arquivos.
Há um comando bem simples no linux para modificar somente as extensões dos arquivos
rename .extensaoatual .extensaoquevocequer *.extensaoatual
Como você já deve ter entendido o campo 'extensaoatual' é a extensão que está nos seus arquivos, a que você quer mudar.
Exemplos:
Se vc tem várias fotos com a extensão .JPG, mas quer que as letras fiquem minusculas. Você deve digitar na console
# rename .JPG .jpg *.JPG
Isso fará com que todos os arquivos .JPG do diretorio atual (a pasta em que vc está no momento), fiquem com a extensão .jpg.
rename .GIF .gif *.gif
Isso fará com que todos os arquivos .GIF do diretorio atual (a pasta em que vc está no momento), fiquem com a extensão .gif.
E assim sucessivamente.
Dica de lugar que explica muito bem isso em Piter Punk's.
Como o que eu queria era renomear o 'nome' mesmo do arquivo e deixar a mesma extensão e não consegui descobrir como fazia isso com esse comando [:'(] , continuei procurando e achei outros dois scripts muito legais mesmo!
2. Script que substitui uma parte do nome de um arquivo por outra definida por você.
Dica pegue nesse site.
a. Abra um editor de texto;
b. Copie e cole essas linhas acima no arquivo em branco e salve o arquivo com um nome sugestivo, tipo 'renomear'.
c. Salve o script na pasta onde estão os arquivos a serem renomeados.
d. Estando no diretório onde estão os arquivos que vc quer renomear, digite na console
./nomedoarquivo, se salvar o arquivo como 'renomear',
digite ./renomear extensão 'padrao no nome do arquivo' 'palavra a ser substituida'.
Exemplo:
Você tem uma pasta com várias fotos nomeadas como '-1ª viagem-' e quer substituir isso por 'foto',
digite: ./renomear jpg '-1ª viagem-' 'foto'
Assim o trecho '-1ª viagem-' será substituido por 'foto' em todos os arquivos.
A explicação do site que serviu de referência é mais completa, incluindo alguns termos mais técnicos para quem quiser saber como o script funciona.
3. Renomear os arquivos de forma mais organizada ainda.
Dica peguei de http://www.dicas-l.com.br/dicas-l/20080301.php
O que vai mudar um pouco é a chamada a ser feita na console.
Eu fiz assim:
a. Salvei como 'renomear2' na pasta onde estavam as fotos.
b. No diretório atual, digitei ./renomear2 .jpg
c. Daqui em diante, ele pede para vc digitar o padrão a ser procurado e a extensão do arquivo.
O que eu percebi foi que o arquivo é apagado quando o script é executado com sucesso.
Infelizmente, consegui renomear as fotos na primeira vez que tentei e fica muito legal, mas fiz outras tentativas e não obtive sucesso [:'(]
Vou tentar novamente e atualizarei o post.
Mais uma vez, a dica peguei de http://www.dicas-l.com.br/dicas-l/20080301.php
Até mais!
E assim sucessivamente.
Dica de lugar que explica muito bem isso em Piter Punk's.
Como o que eu queria era renomear o 'nome' mesmo do arquivo e deixar a mesma extensão e não consegui descobrir como fazia isso com esse comando [:'(] , continuei procurando e achei outros dois scripts muito legais mesmo!
2. Script que substitui uma parte do nome de um arquivo por outra definida por você.
Dica pegue nesse site.
#!/bin/bashE como é que faz pra usar um script? Assim;
criterio=$1
antigo=$2
novo=$3
if [ $# -lt 3 ] ; then
echo "modo de usar: renomeia [criterio] [texto_a_ser_substituido] [texto_substituto]"
exit 0
fi
for arq in *$criterio*
do
mv "$arq" "$(echo $arq | sed "s/$antigo/$novo/")"
done
a. Abra um editor de texto;
b. Copie e cole essas linhas acima no arquivo em branco e salve o arquivo com um nome sugestivo, tipo 'renomear'.
c. Salve o script na pasta onde estão os arquivos a serem renomeados.
d. Estando no diretório onde estão os arquivos que vc quer renomear, digite na console
./nomedoarquivo, se salvar o arquivo como 'renomear',
digite ./renomear extensão 'padrao no nome do arquivo' 'palavra a ser substituida'.
Exemplo:
Você tem uma pasta com várias fotos nomeadas como '-1ª viagem-' e quer substituir isso por 'foto',
digite: ./renomear jpg '-1ª viagem-' 'foto'
Assim o trecho '-1ª viagem-' será substituido por 'foto' em todos os arquivos.
A explicação do site que serviu de referência é mais completa, incluindo alguns termos mais técnicos para quem quiser saber como o script funciona.
3. Renomear os arquivos de forma mais organizada ainda.
Dica peguei de http://www.dicas-l.com.br/dicas-l/20080301.php
#!/bin/bashO esquema para execução é o mesmo do script anterior: Abrir editor de texto, copiar, colar, salvar.
#Padrao é qualquer coisa que vá antes do . (ponto) Ex.: Aniversario_do_Cabecao
echo -e "Padrao: \c"
read PADRAO
#A extensao do arquivo. Digitar jpg aqui pode ser uma boa ideia
echo -e "Extensao: \c"
read EXT
for DIR in $(ls)
do
i=$((i+1))
mv $DIR $PADRAO"_"$i.$EXT
done
O que vai mudar um pouco é a chamada a ser feita na console.
Eu fiz assim:
a. Salvei como 'renomear2' na pasta onde estavam as fotos.
b. No diretório atual, digitei ./renomear2 .jpg
c. Daqui em diante, ele pede para vc digitar o padrão a ser procurado e a extensão do arquivo.
O que eu percebi foi que o arquivo é apagado quando o script é executado com sucesso.
Infelizmente, consegui renomear as fotos na primeira vez que tentei e fica muito legal, mas fiz outras tentativas e não obtive sucesso [:'(]
Vou tentar novamente e atualizarei o post.
Mais uma vez, a dica peguei de http://www.dicas-l.com.br/dicas-l/20080301.php
Até mais!