[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Localizar, trocar extensão e copiar arquivo
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Localizar, trocar extensão e copiar arquivo |
Date: |
Sat, 11 Feb 2006 16:13:06 -0200 |
Tem formas melhores mas... eu faria assim:
find . -name "*.dpk" -type f > lista
while read file; do
echo -n "alterando arquivo '$file' "
mv "${file}" "${file%dpk}res" && echo "Done" || echo "Erro"
done < lista
Logo alguem mostra um onw-liner que resolve...
abraços.
Em 11/02/06, Joao Morais <address@hidden> escreveu:
>
> Pessoal,
>
> Preciso localizar alguns arquivos, trocar a extensão e utilizar como
> parâmetro do cp. Segue o que eu tenho aqui:
>
> for ResFile in $(find . -name "*.dpk" -type f | sed 's/\.dpk$/\.res/g')
> do
> cp -f "${SourceFile}" "${ResFile}"
> done
>
> Funciona que é um espetáculo, mas o "for" recebe os arquivos separados
> por espaço em branco, então se eu tenho um diretório ou um arquivo com
> brancos no nome (mania de usuário Windows), o script não funciona.
>
> Outra:
>
> $ find . -name "*.dpk" -type f | sed 's/\.dpk$/\.res/g' | e...
>
> aqui eu não tenho como passar a saída do sed para o cp (ou tenho?).
>
> Bom mesmo é usar o parâmetro exec do find. Vamos tentar:
>
> $ find . -name "*.dpk" -type f \
> -exec cp -f "${SourceFile}" "$(echo {} | sed 's/\.dpk$/\.res/g')" \;
>
> mas aqui o {} do exec está dentro de outro processo e não vira nome de
> arquivo.
>
> Alguma outra dica? Pode ser elegante ou não.
>
> Obrigado,
> --
> João Morais
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
>
>
>
> Yahoo! Grupos, um serviço oferecido por:
>
> PUBLICIDADE
>
> ________________________________
Links do Yahoo! Grupos
>
>
> Para visitar o site do seu grupo na web, acesse:
> http://br.groups.yahoo.com/group/shell-script/
>
> Para sair deste grupo, envie um e-mail para:
> address@hidden
>
> O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
> Yahoo!.
--
Tiago B Peczenyj
Linux User #405772
# cd /pub
# more beer