você está aqui: Home  → Arquivo de Mensagens

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

 

 

Opinião dos Leitores

Moises Augusto
07 Jan 2011, 09:47
Muito bom.

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,


*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script