[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.
> >>
> >>
> >
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- RE: [shell-script] retirar uma letra (rename),
Marcio Gil <=