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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: script que substitui espaços


From: Leonardo Vieira
Subject: Re: script que substitui espaços
Date: Thu, 03 Mar 2005 17:57:32 -0000
User-agent: eGroups-EW/0.82

Ah galera tem uma coisa se eu usar o script abaixo:

for i in *\ *.xml; do
n=`echo "$i" | tr ' ' _`
mv "$i" "$n"
done

Mesmo que não exista nenhum arquivo com espaço no nome ele entra no 
loop e tenta fazer o mv, gerando assim uma mensagem de erro.

Como fazer para que entre no loop, somente se existir algum arquivo 
com espaço no nome.

Att.

leonardo Vieira


--- Em address@hidden, "Leonardo Vieira" 
<leonardoflavieira@y...> escreveu
> 
> Valew galera, realmente era para renomear somente os arquivos de um 
> determinado diretório e não de toda a sua raiz.
> 
> --- Em address@hidden, Gustavo Chaves 
<gustavo@c...> 
> escreveu
> > >>>>> On Wed, 2 Mar 2005 20:04:39 -0300, Andreyev Dias de Melo 
> <andreyevbr@g...> said:
> > 
> >   > Como sempre, TIMTOWTDI:
> >   > $ find $diretorio -type f -name \*.old | while read LINE ; do 
mv
> >   > "${LINE}" "${LINE//\ /_}"; done
> > 
> > Um problema é que o mv provavelmente não está sendo chamado no 
mesmo
> > $diretorio.  Mais correto seria:
> > 
> >         mv "$diretorio/${LINE}" "$diretorio/${LINE//\ /_}"
> > 
> > Outro detalhe é que o find vai buscar arquivos em subdiretórios.  
A
> > especificação original do problema não era clara, mas eu entendi 
que
> > seria apenas para os arquivos do mesmo diretório.  Dá pra resolver
> > isso com opções -maxdepth (ser for o find do GNU) ou -prune.
> > 
> > Na minha versão eu compliquei o glob usando "*\ *.old" ao invés de
> > "*.old" pra só chamar o mv para os arquivos que contêm espaços.  É
> > claro que chamando-o para os que não contém não muda o nome, mas 
> pode
> > criar muitos processos desnecessariamente.
> > 
> > Gustavo.




reply via email to

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