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: Ney Vitor ( Gmail )
Subject: Re: [shell-script] Apagar arquivos em diretorios com espacos e caracteres especiais.
Date: Mon, 30 Aug 2010 11:22:21 -0300
User-agent: KMail/1.11.4 (Linux/2.6.28-19-generic; KDE/4.2.4; i686; ; )

Tiago , concordo com voce. Utilizar o while read realmente é muito mais 
eficiente porque  pega todas as exceções incluindo os espaços no nome do 
arquivo. Só que prefiro que a pessoa tenha como primeiro visualizar os arquivos 
que ela vai excluir, e em caso de exceções que ele possa visualizar antes e se 
vier a executar a exclusão , exclua apenas quando tenha total certeza do que 
está fazendo. 
A sua opção realmente é a mais eficiente mas , em caso de deleção eu tenho uma 
postura mais cautelosa pois eu mesmo já cometi inúmeros erros assim. 

Quanto a executar o rm uma vez para cada arquivo , realmente é mais lento , 
porém é uma forma de facilitar a criação de logs de exclusão , o que nos ajuda 
muito em determinados casos . 

Valeu e muito pela dica, espero que possamos trocar mais informações no 
futuro.


Abs 

Att: Ney Vitor 

On Monday 30 August 2010 10:43:33 Tiago Peczenyj wrote:
> 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



reply via email to

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