On Fri, 8 Feb 2002, Joel Franco wrote: > On Fri, Feb 08, 2002 at 01:31:05AM -0200, Antonio Alberto Lobato wrote: > > > > > > Oi, debiers. > > > > Na linha de comando abaixo, como fazer o find zerar os arquivos (apagar > > o conteúdo), e não criar um arquivo de nome {} ? O man ensina a usar a > > opção -exec mas não detalha a esse ponto. Já tentei usar backslash, > > quotes, double quotes em alguns pontos do comando e nada. > > > > $ find -type f -name algo -exec echo -n > {} \; > > $ for i in `find -type f -name algo`; do > rm $i > touch $i > done > > teoricamente isso funcionaria, nao (fixme) ? >
Não dá pra usar isso porque ao criar arquivos novos com touch, você não vai manter os devidos donos/grupos/permissões dos arquivos de log. A idéia de usar o loop "for" está certa, é assim que eu normamente apago meus logs, mas com "echo -n >", e não "rm" e "touch". Mas na verdade, perguntei sobre o find porquê quero aprender especificamente sobre ele. Em essência, minha pergunta é: Como usar redirecionamento no espaço entre "-exec" e "\;" de forma que o find continue expandindo o "{}" para o nome do arquivo que está sendo processado ? Tom