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

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

Re: [shell-script] Apagar arquivos em diretorios com espacos e caractere


From: Tiago Peczenyj
Subject: Re: [shell-script] Apagar arquivos em diretorios com espacos e caracteres especiais.
Date: Mon, 30 Aug 2010 10:43:33 -0300

Ney,

Se vc tem arquivos cujo nome possui espaco em branco, isso confunde o
comando rm pois o espaco também é separador de arquivo.

Vc poderia fazer o seguinte

while read i ; do
  rm "$i" || echo "erro ao excluir '$i' "
end < arquivo

Ou alterar o IFS durante a operação, no livro do julio tem exemplo.

IMHO usar find -print0 + xargs -0 é mais eficiente, pois vc
temporariamente vai estar separando os nomes dos arquivos pelo byte 0
e não por algo que pode ser confundido com uma parte do nome do
arquivo - como um espaço em branco. porém nem sempre vc vai estar
usando um find, o arquivo pode ser o resultado de uma série de
comandos mais elaborados.

Basta lembrar que dessa forma vc vai executar o rm uma vez por
arquivo, o que é ineficiente, mas para poucos arquivos é irrisório.

2010/8/30 Ney Vitor ( Gmail ) <address@hidden>:
> Vc pode fazer o seguiinte :
> Primeiro encontre os mesmos e coloque em um arquivo :
>
>
> find / -name *.eml -print > arquivo
> Onde arquivo é o nome do arquivo a ser criado eu sugiro TMP . Antes de deletar
> , dá uma olhada neste arquivo que ele terá todos os nomes dos arquivos que
> serão deletados , o que pode evitar algum desastre ok ?
>
> Depois execute em qualquer script :
>
> for i in `cat arquivo`
>   do
>       rm $i
>       if [ $? -ne 0 ] ; then
>          echo " Erro ao excluir  $i " >> err
>       fi
>   done
>
>
> E ele vai excluir todos os seus arquivos .O que derem erro , vc pode verificar
> manualmente o porque lendo o arquivo err . Existem maneiras mais agressivas ,
> mas esta é a mais segura .
>
>
> Espero que ajude .
>
> Att: Ney Vitor
>
>
> On Monday 30 August 2010 09:31:53 Cristiano wrote:
>> Caros amigos, Bom dia!
>>
>> Estou com uma série de arquivos .eml em meu S.O. Linux e não consigo
>> apagá-los, em pesquisa, encontrei o comando " find / -name \*.eml -print |
>> xargs rm -f" o qual me ajudou para apagar alguns, só que existem muitos
>> outros em pastas que contêm espaços em seus nomes, assim como caracteres
>> especiais, pex.: "/home/teste/teste1/aplicativo/otimiza??o
>> rotinas/cetecwnxp3148.eml", não possuo experiência em shell, assim sendo,
>> gostaria da ajuda de vocês para desenvolver uma rotina em shell que
>> procurasse pelos arquivos com a extensão ".eml" e os apagassem das minhas
>> pastas, qualque pasta, escrita da forma que fosse.
>>
>> obrigado pela atenção.
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> 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
>
> Links do Yahoo! Grupos
>
>
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


reply via email to

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