[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Multi rename
From: |
Aurelio Marinho Jargas |
Subject: |
Re: [shell-script] Multi rename |
Date: |
Sat, 5 Jul 2003 09:05:59 -0300 (ART) |
oi dorneles,
sei que a discussão já acabou (cheguei atrasado), mas como você
pediu um pitaco, aqui vamos nós :)
> $ ls
> ABC_123.a ABC_123.b ABC_123.c
>
> Passar a ficar:
> $ ls
> XYZ_123.a XYZ_123.b XYZ_123.c
>
> Bom, eu escrevi o seguinte código:
>
> #!/bin/bash
>
> if [ ! $3 ]; then
> echo "Sintaxe: `basename $0` retirar incluir arquivos"
> echo "onde:"
> echo " retirar String a retirar do começo do nome dos
> arquivos"
> echo " incluir String a incluir no começo do nome dos
> arquivos"
> echo " arquivos Arquivos a renomear"
> exit
> fi
>
> retirar=$1
> incluir=$2
> shift;shift
> arquivos=$@
>
> tamanho=${#retirar}
>
> for arquivo in $arquivos; do
> sufixo=${arquivo:$tamanho}
> mv $arquivo $incluir$sufixo
> done
[...]
olha, a única coisa que eu faria diferente, era não usar
o esquema do ${var:N} que específico do bash2.
ao invés dele podia ser um sed, que dai podia trocar a
string em qualquer parte do nome do arquivo, e não só
no começo:
for arquivo in $arquivos; do
novonome=$( echo $arquivo | sed "s/$retirar/$incluir/" )
mv $arquivo $novonome
done
ou, se quiser amarrar ao bash2, usar o sed embutido na expansão
de variáveis: ${var/antigo/novo}
for arquivo in $arquivos; do
novonome=${arquivo/$retirar/$incluir}
mv $arquivo $novonome
done
> Mas eu achei que o troço ficou meio tosco... :-(
> Mestre Júlio, grande Aurélio e demais amigos, alguém
> teria algum pitaco a acrescentar? ;-)
acrescentar não, só pentelhar mesmo :)
=====
--
Aurelio Marinho Jargas - Floripa
Procuro trabalho, mais info em http://aurelio.net
Fotos do IV FISL (Porto Alegre) http://aurelio.net/viagem/fisl-2003/
Desenvolvimento Livre http://aurelio.net/doc/changelog-nerd.html
_______________________________________________________________________
Yahoo! Mail
Mais espaço, mais segurança e gratuito: caixa postal de 6MB, antivírus,
proteção contra spam.
http://br.mail.yahoo.com/