O comando rename na prática

Publicado por Fábio Berbert de Paula em 28/05/2020

[ Hits: 3.466 ]

Blog: https://mestrefabio.com

 


O comando rename na prática



O comando rename é usado para renomear múltiplos arquivos de acordo com as regras que você criar. É desejável conhecer o básico de expressões regulares para dominar o comando.

Vou pegar como exemplo um diretório contendo arquivos *zip com nomes bem cabulosos:

cd meu-diretorio
$ ls *zip

Double Dragon (1989) (Activision) (PAL) [!].zip
Kung Fu Master (1984) (Activision).zip
Mario Bros. (1983) (Atari).zip
Nightmare (1983) (Sancho).zip
Volleyball (1983) (Starsoft) (PAL) [!].zip


Quero traduzir todas as letras maiúsculas em minúsculas:

rename 'y/A-Z/a-z/' *zip
ls *zip
double dragon (1989) (activision) (pal) [!].zip
kung fu master (1984) (activision).zip
mario bros. (1983) (atari).zip
nightmare (1983) (sancho).zip
volleyball (1983) (starsoft) (pal) [!].zip


Agora quero substituir todos os espaços em branco por "_":

rename 's/ /_/g' *zip
$ ls *zip

double_dragon_(1989)_(activision)_(pal)_[!].zip
kung_fu_master_(1984)_(activision).zip
mario_bros._(1983)_(atari).zip
nightmare_(1983)_(sancho).zip
volleyball_(1983)_(starsoft)_(pal)_[!].zip


E finalmente remover todos os caracteres especiais, mantendo somente as letras, dígitos, "_" e ponto:

rename 's/[^a-z0-9\.\_]//g' *zip
$ ls *zip

double_dragon_1989_activision_pal_.zip
kung_fu_master_1984_activision.zip
mario_bros._1983_atari.zip
nightmare_1983_sancho.zip
volleyball_1983_starsoft_pal_.zip


É possível combinar todas as regras que você deseja em um único comando, separando as regras por ";":

rename 'y/A-Z/a-z/ ; s/ /_/g ; s/[^a-z0-9\.\_]//g' *zip

Bônus

É possível criar um alias para corrigir nomes de arquivos. Adicione a seguinte linhas ao arquivo ~/.bashrc:

alias renomear="rename 'y/A-Z/a-z/ ; s/ /_/g ; s/[^a-z0-9\.\_]//g'"

Recarregue as configurações do bashrc (source ~/.bashrc) ou reinicie a sessão de usuário, em seguida você pode consertar o nome de seus arquivos digitando:

renomear Arquivo\ maLuCo.Qualqu3r

Até a próxima!

Outras dicas deste autor

SED - texto para maiúsculas, minúsculas, pascal case e camel case

Converter imagens para fundo transparente via linha de comando

Extraindo seu endereço IP com shell script (egrep + awk)

Convertendo arquivos em PDF no Vim

Restringindo acesso ao servidor de FTP

Leitura recomendada

Conversão de encodings

Visualizando os arquivos por ordem de data

O comando join

Google Authenticator no terminal Linux

Os comandos basename e dirname

  

Comentários
[1] Comentário enviado por maurixnovatrento em 28/05/2020 - 21:11h


Legal esse comando. Muito bom.

___________________________________
Conhecimento não se Leva para o Túmulo.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts