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 <[email protected]>: > > 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. > >> > >> > > >
