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 ) <[email protected]>: > > 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: [email protected] > > --------------------------------------------------------------------- > > 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 ------------------------------------ --------------------------------------------------------------------- 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: [email protected] --------------------------------------------------------------------- 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 <*> 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: [email protected] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
