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

[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/


reply via email to

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