gnu linux badge

Como renomear múltiplos arquivos no Linux, com o comando rename.

O utilitário rename, escrito em Perl, pelo próprio Larry Wall, permite alterar os nomes de vários arquivos em lote, dentro de condições e regras que você mesmo pode estabelecer.
Normalmente, quando queremos renomear um arquivo ou diretório, no GNU/Linux, usamos o comando mv (move).
Quando o trabalho envolve uma grande quantidade de arquivos, o rename oferece mais flexibilidade, como ferramenta.
Vale aprender a utilizá-lo — até por que é uma maravilha se for integrado a algum script.
O cmando rename no Linux

Como usar o comando rename

O utilitário, tal como o seu nome indica, renomeia múltiplos arquivos ou grupos de arquivos.
Com o uso de expressões Perl, o rename pode alterar nomes de arquivos para “tudo” maiúsculas/minúsculas, entre outras coisas.
No exemplo. que segue, vou criar 4 arquivos para usar nos meus exemplos, com o comando touch:

touch abril2015.bak junho2015.bak maio2015.bak marco2015.bak

A seguir, renomear todos os arquivos criados, com extensão ‘.bak’ para a nova extensão ‘.backup’. Veja:

rename 's/\.bak$/\.backup/' *.bak

O comando, acima, se divide em dois argumentos:

  • No primeiro, temos a expressão em Perl 's/\.bak$/\.backup/' que substitui .bak por .backup
  • No segundo, é informado a que arquivos o comando se aplica: todos que têm extensão .bak

Veja o meu resultado:

ls -l

total 4
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 abril2015.backup
drwxrwxr-x 4 justincase justincase 4096 Out  1 16:36 box
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 junho2015.backup
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 maio2015.backup
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 marco2015.backup

Verifique as alterações antes de aplicá-las

Quando se vai executar uma tarefa em lotes e, como consequência, atingir vários arquivos ao mesmo tempo, é interessante ter certeza de que o efeito produzido seja exatamente o que se deseja.
Voltar atrás, depois de renomear dezenas, centenas ou milhares de nomes de arquivos, pode ser muito difícil.
Para isto, o comando rename dispõe de uma opção que simula seus efeitos, mostrando o que seria feito, para você poder avaliar se é o que deseja.
No comando abaixo, será pedido ao rename que simule a alteração das extensões dos arquivos de volta para .bak:

rename -n -v 's/\.backup$/\.bak/' *.backup

A opção ‘-n’, quer dizer no-act, ou seja, pede para que o rename não aja.
A opção ‘-v’, pede para que o programa seja verboso e conte tudo o que está fazendo.
O meu resultado, foi este:

abril2015.backup renamed as abril2015.bak
junho2015.backup renamed as junho2015.bak
maio2015.backup renamed as maio2015.bak
marco2015.backup renamed as marco2015.bak

Note que, ao pedir uma listagem do diretório…

ls -l

… Nada foi feito:

-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 abril2015.backup
drwxrwxr-x 4 justincase justincase 4096 Set 29 16:18 box
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 junho2015.backup
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 maio2015.backup
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 marco2015.backup

Como converter nomes de arquivos de minúsculas para maiúsculas e vice-versa

Para converter de minúsculas para maiúsculas, use a seguinte fórmula:

rename -v 'y/a-z/A-Z/' *.backup
abril2015.backup renamed as ABRIL2015.BACKUP
junho2015.backup renamed as JUNHO2015.BACKUP
maio2015.backup renamed as MAIO2015.BACKUP
marco2015.backup renamed as MARCO2015.BACKUP
[/bash]
Veja a minha listagem:


total 4
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 ABRIL2015.BACKUP
drwxrwxr-x 4 justincase justincase 4096 Set 29 16:18 box
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 JUNHO2015.BACKUP
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 MAIO2015.BACKUP
-rw-rw-r-- 1 justincase justincase    0 Out  1 11:41 MARCO2015.BACKUP

Para fazer a operação inversa, troque a posição dos caracteres na expressão 'y/a-z/A-Z/' para 'y/A-Z/a-z/'.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como “Rick and Morty” e “BoJack Horseman”.
Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *