shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [shell-script] retirar uma letra (rename)


From: Marcio Gil
Subject: RE: [shell-script] retirar uma letra (rename)
Date: Mon, 18 Jan 2010 19:20:13 -0200

Entrando 4 meses atrasado na conversa :-)

Em 2003 eu havia criado um script "rename", para renomeações simples
inspirado no REN do DOS:

http://bash.pastebin.com/f46534b4a

Exemplo:

$ rename '*.*~' '*.bak'
xxx.yyy~ -> xxx.bak
zzz.www~ -> zzz.bak

Então eu procurei melhorar este meu script, mas antes vejamos o que
já existe:

1 - Tem o velho rename do Linux (muito limitado)

http://linux.die.net/man/1/rename

onde posso fazer, no máximo:

$ rename \~ .bak *.*~
xxx.yyy~ -> xxx.yyy.bak
zzz.www~ -> zzz.www.bak

2 - Tem o rename que recomendaram (em Perl), cujo código esta aqui

http://tips.webdesign10.com/files/rename.pl.txt

Que funciona muito bem, mas acho complicado:

$ rename 's/\..*~/.bak/' *.*~
xxx.yyy~ -> xxx.bak
zzz.www~ -> zzz.bak

3 - Também existe o comando mmv:

http://linux.die.net/man/1/mmv

Mais parecido com o meu script:

$ mmv '*.*~' '#1.bak'
xxx.yyy~ -> xxx.bak
zzz.www~ -> zzz.bak

4 - Procurei então melhorar o meu script:

http://bash.pastebin.com/f5b8ad0e0

Funciona como o original, só que aceita até nove coringas:

rename '*.*~' '*.bak'
xxx.yyy~ -> xxx.bak
zzz.www~ -> zzz.bak

Mas também funciona como o rename.pl:

rename --sed 's/\..*~/.bak/' '*.*~'
xxx.yyy~ -> xxx.bak
zzz.www~ -> zzz.bak

E poderia fazê-lo facilmente trabalhar como o mmv (com o #n).
Umas das vantagens é que também renomeia em subdiretórios (como o
mmv):

rename -r '*.*~' '*.bak'

Também criei uma variação para cópia (embora eu possa determinar o
comando no rename, acho assim mais prático):

http://bash.pastebin.com/f7d056c6

Espero que seja útil a alguém,

Saudações,

Márcio Gil.

> -----Original Message-----
> From: Krugger
> Sent: Friday, September 25, 2009 10:03 AM
> 
> Pessoal,
> 
> Só pra constar:
> 
> A grande maioria das distros vem com um utilitário chamada rename,
que
> renomeia arquivos usando expressões regulares.
> Outra forma de fazer isso então seria:
> 
> rename 's/b//' *.jpg
> 
> 2009/9/23 Pedro Pardini <address@hidden>:
> > Obrigado, Cyro.
> >
> > Funcionou, e eu aprendi mais estas duas formas - a sua e a 
> do Jose Edson.
> >
> > Abraços
> > Pedro Pardini
> >
> >
> >
> > Cyolfi Cyro escreveu:
> >>
> >>
> >> Criei os arquivos com os mesmos nomes que os seus e salvei 
> o script abaixo
> >> na mesma pasta onde estava os arquivos e rodei, acho que 
> funcionou da
> >> forma
> >> que você quer....
> >>
> >> for i in `ls -1 | grep b`
> >> do
> >> NEW=$(echo "$i" | tr -d b)
> >> mv $i $NEW
> >> done
> >>
> >> Att
> >>
> >> Cyro Ciolfi
> >> (19) 8144 - 7944
> >> (19) 3324 - 2804
> >> www.salasprontas.com
> >> Sua sala pronta para treinamentos em Campinas.
> >>
> >>
> >
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]