find comando não localiza string em subpastas

1

Eu tenho uma estrutura de arquivos como esta:

/apps/base/logs1
and 
/apps/base/logs2

As pastas logs1 e logs2 também possuem arquivos .log com outros arquivos.

Estou tentando fazer isso A partir da pasta / apps, quero encontrar todos os arquivos (pastas e subpastas) com a string "ERROR".

Este comando

 find . -name "*.log" -exec grep -H "ERROR" '{}' \; -print

Funciona bem e me mostra todos os arquivos .log diretamente na pasta quando estou na pasta / apps / base / logs1 ou / apps / base / logs2.

Mas quando eu mudo para a pasta / apps, este comando não produz nenhum resultado.

Há algo que eu esteja perdendo ou precise mudar? Eu tentei várias outras opções, mas não consigo fazê-lo funcionar.

Qualquer ajuda será apreciada. Obrigado

    
por Ayusman 19.01.2013 / 00:52

1 resposta

0

ok, tenho a resposta. Desde que eu estava em um ambiente corporativo, havia muitos links simbólicos criados. Eu tive que pedir explicitamente para encontrar o comando para também seguir os links simbólicos. Então o comando agora é assim:

find -L /apps -name "*.log" -exec grep -H "ERROR" '{}' \; -print

O problema eram diretórios como logs1 e logs2 eram links simbólicos e, portanto, não eram seguidos pelo comando find. A opção -L força o comando a procurar nos links sym também.

    
por Ayusman 27.06.2013 / 03:00