você está aqui: Home  → Arquivo de Mensagens

Ebook Gratuito: Dá para fazer em Shell?, com o Prof. Julio Neves

Usando regex com o comando rename

Colaboração: Sérgio Luiz Araújo Silva

Data de Publicação: 11 de Janeiro de 2009

Sabemos que no GNU/Linux não há necessidade de extensões de arquivos mas para nós humanos, que ainda não temos a capacidade de adivinhar o conteúdo dos arquivos, tê-las é útil. Havia eu criado aproximadamente 200 arquivos que estavam "sem extensão", naquele momento a solução foi complexa...

 find ./ -maxdepth 1 -type f -print0 | xargs -0 -i mv ./{} ./{}.txt

Mas todo este trabalho poderia ser feito de forma extremamente simples

 rename 's/$/.txt/g' *

O cifrão indica o fim do padrão, que no caso é o nome de cada um dos arquivos.

Se desejar retirar espaços faça:

 rename "s/ *//g" *.mp3

Para converter todos os nomes para minúsculo faça:

 rename 'y/A-Z/a-z/' *

Não estou certo se o comando rename aceita padrões Posix. No Ubuntu não consegui fazer funcionar...

O resultado deveria ser AÇÃO e não AçãO

$ echo ação | tr [:lower:] [:upper:]
AçãO

Fiz até uma postagem no meu blog sobre: http://vivaotux.blogspot.com/2008/08/problema-com-classes-posix-no-ubuntu.html

Sou um entusiasta do Software Livre, quase que diariamente posto dicas sobre linux, sed, bash, o inseparável vim etc. http://vivaotux.blogspot.com
Ultimamente tenho lido sobre python, acredito muito nesta linguagem! Aqui no dicas-l muito tenho aprendido, e todas as minhas contibuições são um modo de retribuir tudo o tenho recebido de forma tão generosa da comunidade!


Veja a relação completa dos artigos de Sérgio Luiz Araújo Silva