Comando rename: Renomeando Arquivos em Massa
O que você vai conseguir fazer
- Visualizar a renomeação com `rename -n` antes de executar de verdade
- Trocar extensões e textos em massa com `s/antigo/novo/`
- Distinguir a versão Perl da util-linux com `rename --version` e trocar a sintaxe
Pré-requisitos (leia estes primeiro)
O Que Você Vai Aprender
- Como renomear muitos arquivos de uma vez com um único comando
- O hábito seguro de visualizar mudanças com
-nantes de qualquer renomeação - Como a substituição
s/antigo/novo/troca extensões ou texto em massa - Como distinguir os dois comandos rename diferentes (Perl vs util-linux)
As palavras deste artigo
- Renomear: é mudar o nome de um arquivo. Nada mais do arquivo muda.
- Extensão: é a parte
.jpgou.txtno fim do nome do arquivo. - Padrão: é um jeito de escrever "procure um texto com esta forma". Aqui ele tem a forma
s/antigo/novo/. - Dry run: é mostrar o plano sem fazer nada de fato. Neste artigo, o
-né o dry run. - AspasEnvolver um texto entre aspas (' ou ") para que seja tratado como um único valor, por exemplo um que tenha espaços.: é envolver o texto em
'. Dentro das aspas, os símbolos passam como caracteres comuns. - DiretórioUm local que organiza arquivos. É a mesma ideia da "pasta" do Windows ou macOS. atual: é o diretório onde você está agora. Leia como "onde você está".
O rename reescreve nomes de arquivo. É justamente por isso que você aprende o -n primeiro. Com o -n ligado, nenhum arquivo muda.
Resumo Rápido (os padrões para memorizar primeiro)
- Visualizar primeiro -->
rename -n 's/antigo/novo/' *(mostra o plano, não muda nada) - Depois executar -->
rename 's/antigo/novo/' * - Maiúsculas para minúsculas -->
rename 'y/A-Z/a-z/' * - Não sabe qual rename você tem -->
rename --version
Premissas (ambiente alvo)
- SO: Ubuntu / Debian. O
renamepadrão é a versão Perl - Em outras distribuições (Fedora e afins) você pode ter a versão util-linux. A sintaxe dela é diferente (coberta na Seção 6)
Três hábitos que deixam a prática segura
Um rename errado muda vários nomes de uma vez. Os nomes antigos não voltam sozinhos. Estes três hábitos deixam a prática segura.
- Crie um diretório de prática e trabalhe só dentro dele (por exemplo,
mkdir -p ~/rename-practice && cd ~/rename-practice) - Teste em arquivos descartáveis, como os vazios criados com
touch - Sempre adicione
-nantes da execução real e leia as mudanças planejadas
Note que o rename não faz parte do terminalUm programa interativo que interpreta os comandos digitados e os executa. virtual deste site. Teste em uma máquina Linux real ou no WSL. É justamente por isso que os três hábitos acima importam.
1. O Que É o Comando rename?
Conclusão: rename muda os nomes de muitos arquivos de uma vez usando um padrão, eliminando a necessidade de executar mv um arquivo por vez.
photo1.jpeg e photo2.jpeg. Quero mudar cada extensão para .jpg.mv?rename serve.mv é uma ferramenta para renomear um arquivo. O rename é uma ferramenta para renomear muitos de uma vez.mv 50 vezes?.jpeg por .jpg". Essa é a verdadeira força dele.A ideia básica do rename
rename 's/jpeg/jpg/' *.jpeg
↑ ↑
| arquivos alvo (aqui, todo .jpeg)
regra (substituir jpeg por jpg)Ele faz uma coisa só: encontra jpeg no nome do arquivo e reescreve para jpg. E faz isso em todos os arquivos alvo de uma vez.
2. Por Que Usar rename?
Conclusão: mv é suficiente para um arquivo, mas ineficiente para dezenas sob a mesma regra. rename permite escrever o padrão uma vez.
mv, certo? Por que aprender o rename?mv old.txt new.txt, o mv basta.mv você digitaria o comando 100 vezes.rename você escreve a regra uma vez e ela se aplica a tudo.2026_ no início de cada nome" ou "transformar espaços em underscores" terminam num comando só. E dão menos erro de digitação.Renomear arquivos é difícil de desfazer. Digitar mv 50 vezes convida a erros de digitação.
Concentrar o trabalho em uma única regra rename deixa apenas uma coisa para conferir, o que é mais seguro.
Há o outro lado. Uma regra errada muda os 50 nomes de uma vez. Por isso a visualização com -n da próxima seção é essencial.
3. Sempre Visualize Com -n Primeiro (o hábito essencial)
Conclusão: Sempre execute rename com -n primeiro para ver exatamente o que mudaria, depois remova -n para aplicar de verdade.
A coisa mais importante com o rename é nunca executar às cegas. Adicione -n primeiro. Ele é a forma curta de --nono, o modo sem ação.
Com o -n, apenas o plano de mudanças aparece.
$ rename -n 's/jpeg/jpg/' *.jpeg
rename(photo1.jpeg, photo1.jpg) rename(photo2.jpeg, photo2.jpg) rename(photo3.jpeg, photo3.jpg)
rename(photo1.jpeg, photo1.jpg). Os arquivos mudaram de verdade?-n estiver ativo, nenhum arquivo mudou.rename(antes, depois).-n e execute o mesmo comando de novo. Aí a renomeação acontece de verdade.Quando o plano parecer correto, remova -n para executar de verdade.
$ rename 's/jpeg/jpg/' *.jpeg
Agora os arquivos estão realmente renomeados. Adicione -v (--verbose) para imprimir os nomes que foram mudados.
$ rename -v 's/jpeg/jpg/' *.jpeg
photo1.jpeg renamed as photo1.jpg photo2.jpeg renamed as photo2.jpg
A regra de ouro
- Execute
rename -n 'regra' alvospara conferir o plano - Se a saída estiver correta, remova o
-ne execute - Se tiver dúvida, adicione
-vpara ver o resultado também
Mantenha sempre esse hábito de dois passos: visualizar, depois executar.
4. Substituindo Texto Com s///
Conclusão: 's/antes/depois/' é a forma mais comum. Substitui texto dentro dos nomes de arquivo por outro texto.
O rename do Ubuntu (versão Perl) recebe uma regra de substituição como 's/antigo/novo/'. Isso vem da linguagem Perl, onde s significa substitute.
# Mudar extensao .jpeg para .jpg $ rename -n 's/jpeg/jpg/' *.jpeg # Mudar "draft" para "final" nos nomes $ rename -n 's/draft/final/' * # Adicionar "2026_" no inicio (^ significa inicio do nome) $ rename -n 's/^/2026_/' * # Adicionar ".bak" no final ($ significa fim do nome) $ rename -n 's/$/.bak/' *
s no início de s/jpeg/jpg/? Ele está separado por barras.s é o sinal de "substitute" (substituir). s/A/B/ significa "encontre A e substitua por B"./ são separadores. Basta lembrar s/antes/depois/.^ e $. O que são esses?^ é o início do nome e o $ é o fim do nome.s/^/2026_/ significa "adicionar 2026_ na frente". E s/$/.bak/ significa "adicionar .bak no final".Padrões comuns de substituição
| O que você quer | Regra |
|---|---|
| Mudar a extensão | s/jpeg/jpg/ |
| Trocar uma string | s/draft/final/ |
| Adicionar texto no início | s/^/prefix_/ |
| Adicionar texto no final | s/$/_suffix/ |
| Deletar uma string | s/_copy// |
Deixar a substituição vazia (//) significa "deletar essa string".
5. Normalizando Maiúsculas/Minúsculas Com y///
Conclusão: 'y/A-Z/a-z/' converte maiúsculas para minúsculas em massa. Mapeia caracteres um a um.
Para deixar nomes de arquivo em minúsculo, use 'y/A-Z/a-z/'. Aqui o y indica uma tradução no nível de caractere, chamada transliterate em inglês.
# Tornar todas as letras maiusculas em minusculas $ rename -n 'y/A-Z/a-z/' * # Tornar todas as letras minusculas em maiusculas $ rename -n 'y/a-z/A-Z/' *
IMG_001.JPG com maiúsculas misturadas. Quero todos em minúsculas.y/A-Z/a-z/ é perfeito. Ele troca cada A-Z pelo correspondente a-z, um caractere por vez.IMG_001.JPG vira img_001.jpg.s///?s/// substitui um bloco de texto. O y/// substitui um caractere por vez usando uma tabela de mapeamento.y/// é a opção certa.5-1. Lina se enrola: um arquivo se recusou a mudar
File.txt e file.txt. Rodei rename 'y/A-Z/a-z/' * e apareceu uma mensagem que eu nunca tinha visto.$ ls
File.txt file.txt
$ rename 'y/A-Z/a-z/' *
File.txt not renamed: file.txt already exists
$ ls
File.txt file.txt
file.txt. Um arquivo com esse nome já existia.rename do Ubuntu (versão Perl) para em vez de sobrescrever quando o nome de destino existe. Por isso apareceu not renamed.-f. Isso não dá para desfazer, então não use -f neste artigo.not renamed como "esse nome já está ocupado".A mesma verificação acontece com o -n, então você percebe ainda na prévia.
$ rename -n 'y/A-Z/a-z/' *
File.txt not renamed: file.txt already exists
Cuidado com dois arquivos que diferem apenas em maiúsculas e minúsculas. Passar File.txt e file.txt para minúsculo produz o mesmo nome.
Por padrão o segundo é ignorado, não sobrescrito. Uma linha not renamed significa que aquele arquivo ficou como estava.
Só o -f (--force) sobrescreve, e o original não volta. Este artigo nunca usa -f.
6. Cuidado Com Dois Comandos rename Diferentes (Perl vs util-linux)
Conclusão: Existem dois comandos diferentes ambos chamados rename, com sintaxe diferente. Execute rename --version para ver qual você tem. O padrão do Ubuntu é a versão Perl.
Na verdade existem dois comandos com o mesmo nome mas internos diferentes. Esse é o maior ponto de confusão para iniciantes.
rename .jpeg .jpg *.jpeg. Qual está correto?rename --version e você vai saber.$ rename --version
Para a versão Perl (padrão Ubuntu / Debian), você verá algo como File::Rename.
/usr/bin/rename using File::Rename version 1.xx
Para a versão util-linux, você verá as palavras util-linux.
rename from util-linux 2.xx
Os dois comandos rename
| Item | Versão Perl (file-rename) | Versão util-linux |
|---|---|---|
| Comum em | Ubuntu / Debian | Fedora / RHEL, etc. |
| Sintaxe | rename 's/A/B/' * |
rename A B arquivos |
| Padrões | Expressões regulares | Substituição simples |
| Dry-run | -n |
-n |
Expressão regular é um jeito de descrever uma sequência de caracteres como padrão. A forma s/A/B/ usada neste artigo é um tipo dela.
Este artigo assume a versão Perl (padrão Ubuntu). Na versão util-linux, a mesma mudança .jpeg --> .jpg fica assim:
Se você está na versão util-linux, a mesma operação fica assim.
# util-linux version: rename DE PARA arquivos-alvo $ rename .jpeg .jpg *.jpeg
Se a versão Perl não estiver instalada no Ubuntu, adicione com sudo apt install rename. A instalação exige privilégios de administrador.
De qualquer forma, verifique rename --version primeiro.
7. Armadilhas Comuns para Iniciantes
Conclusão: Executar sem -n, mirar em muitos arquivos e confundir as versões Perl e util-linux são os três erros mais comuns.
7-1. Executar sem -n
# Ruim: executar imediatamente sem verificacao (uma regra errada atinge tudo) $ rename 's/a/b/' * # Bom: visualizar com -n primeiro $ rename -n 's/a/b/' *
Renomear é difícil de desfazer. Sempre olhe o plano com -n antes da execução real. Só isso já previne a maioria dos acidentes.
7-2. Mirar em muitos arquivos
# Arriscado: todo arquivo no diretorio atual e alvo $ rename -n 's/o/0/' * # Seguro: restringir o alvo a .txt $ rename -n 's/o/0/' *.txt
* corresponde a todo arquivo do diretório atual. Assim, arquivos não pretendidos acabam sendo pegos. Restrinja o alcance com algo como *.txt.
7-3. Usar a versão util-linux esperando a versão Perl
rename 's/jpeg/jpg/' *.jpeg mas nada mudou.s/.../.../.rename --version. Se for util-linux, mude para a forma rename .jpeg .jpg *.jpeg.8. Mini Exercícios: Tente Você Mesmo
Conclusão: Crie arquivos de prática, depois tente substituição, prefixo e conversão para minúsculas em três exercícios, cada um com -n.
touch não têm conteúdo, então perder um não custa nada.Prepare os arquivos de prática.
$ mkdir -p ~/rename-practice && cd ~/rename-practice $ touch photo1.JPEG photo2.JPEG report_draft.txt
Desafio 1: Mostre o que a mudança de .JPEG para .jpg faria, sem executar.
Ver Dica 1 (Direcionamento)
Você ainda não vai executar. Quer apenas o plano do que aconteceria.
Isso pede uma opção a mais.
Ver Dica 2 (Nome do comando)
Use rename. A opção que só mostra o plano é -n. Escreva a regra na forma 's/antes/depois/'.
Aponte para os arquivos com *.JPEG.
Ver Resposta
$ rename -n 's/JPEG/jpg/' *.JPEG
rename(photo1.JPEG, photo1.jpg) rename(photo2.JPEG, photo2.jpg)
Ver o plano assim significa que deu certo. Nenhum arquivo mudou ainda.
Desafio 2: Mude draft para final em report_draft.txt. Confira o plano e depois execute de verdade.
Ver Dica 1 (Direcionamento)
Você executa o mesmo comando duas vezes. A primeira confere o plano e a segunda aplica.
Na segunda vez, remova a opção de prévia.
Ver Dica 2 (Nome do comando)
A regra é 's/draft/final/'. Adicione -n na primeira vez e remova -n na segunda.
Você pode indicar o arquivo alvo pelo nome.
Ver Resposta
$ rename -n 's/draft/final/' report_draft.txt $ rename 's/draft/final/' report_draft.txt $ ls
photo1.JPEG photo2.JPEG report_final.txt
Deu certo se o arquivo virou report_final.txt.
O Desafio 1 parou no -n, então os arquivos .JPEG continuam intactos. Aqui a regra "com o -n ligado nada muda" aparece de novo.
Desafio 3: Deixe em minúsculas todos os nomes de arquivo restantes.
Ver Dica 1 (Direcionamento)
Aqui você mapeia um caractere por vez, em vez de trocar um bloco de texto. A letra usada é diferente da do s///.
Confira o plano com -n antes e veja se aparece alguma linha not renamed.
Ver Dica 2 (Nome do comando)
Use y/A-Z/a-z/. Escreva depois de rename, entre aspas. O alvo é *.
Ver Resposta
$ rename -n 'y/A-Z/a-z/' * $ rename 'y/A-Z/a-z/' *
Uma linha not renamed: ... already exists significa que aquele arquivo ficou sem mudar. É o sinal de que o nome de destino já está ocupado.
9. Limpando o Diretório de Prática
A limpeza usa o rm, e o rm é diferente de tudo aqui
Um arquivo removido com rm não vai para a lixeira como no modo gráfico. Ele some na hora e não pode ser recuperado.
-r: remove um diretório junto com o conteúdo-i: pergunta sobre cada item antes de remover
Com o -i, aparece uma confirmação para cada alvo. Digite y e aperte Enter para remover, ou digite n para manter.
Antes de apagar, confira sempre o caminhoUma sequência de texto que descreve a localização de um arquivo ou diretório. e o conteúdo com ls.
$ cd ~ $ ls ~/rename-practice $ rm -ri ~/rename-practice
10. Modelos para Copiar e Colar
Conclusão: Mantenha à mão as formas comuns para visualizar, substituir, prefixo/sufixo, converter para minúsculas e verificar a versão.
Formas comuns (versão Perl assumida)
# Visualizar o plano primeiro (mais importante) rename -n 's/old/new/' * # Executar de verdade apos verificar rename 's/old/new/' * # Mudar uma extensao rename -n 's/jpeg/jpg/' *.jpeg # Adicionar texto no inicio rename -n 's/^/2026_/' * # Adicionar texto no final rename -n 's/$/.bak/' * # Deletar uma string rename -n 's/_copy//' * # Normalizar maiusculas para minusculas rename -n 'y/A-Z/a-z/' * # Verificar qual rename voce tem rename --version
11. Revisão
rename eu escrevo a regra uma vez e vários nomes mudam juntos.-n antes e leio o plano com os meus próprios olhos.File.txt com o file.txt também apareceria nesse plano.Resumo em 3 Linhas
- O
renameaplica uma regra a muitos nomes de arquivo de uma vez - Sempre adicione
-nantes da execução real. Ele mostra o plano e não muda nada s/antigo/novo/troca um bloco de texto ey/A-Z/a-z/mapeia um caractere por vez