Usando find com -exec gzip e grep

0

Eu tenho um monte de arquivos de log compactados e quero procurar todos por uma string. Eu tentei isso, mas não está funcionando:

find ./ -name "*.log.zip" -exec gzip -dc {} | grep ERROR \;

Está me dando:

find: incomplete statement
grep: can't open ;

O que eu quero é, para cada arquivo .log.zip, descompactá-lo e fazer a saída para "ERROR". Fazendo isso no AIX, pelo que vale a pena.

    
por mluisbrown 08.04.2013 / 12:21

1 resposta

0

Existe um erro na sua sintaxe. O Find está procurando por \; ou \+ , mas lê | . O Grep está tentando abrir um arquivo chamado ";". A diferença entre terminar -exec com um ponto-e-vírgula ou um plus é executar o comando uma vez para todos os arquivos (+) e executar o comando uma vez para cada arquivo (;).

Tente isto:

find ./ -name "*.log.zip" -exec zcat {} \+ | grep ERROR
# or
find ./ -name "*.log.zip" -exec sh -c 'zcat {} | grep ERROR' \;
    
por 08.04.2013 / 13:10