Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
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!
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
07 Jan 2011, 09:47
Para apagar os 3 primeiros caracteres:
$ rename 's/^...//' *.mp3
NOTA: O "s" significa substituir, o circunflexo (^) indica que é o início do arquivo/string e o ponto significa qualquer caracter naquela posição (como coloquei 3 pontinhos, significa que ele vai apagar os 3 primeiros caracteres).
Até mais,




