Como eu uso o grep para encontrar uma string de texto em arquivos nas subpastas de uma pasta pai sem a opção -r

6

Estou usando o Solaris 10 e tenho duas grep versões uma em /usr/bin e uma em /usr/xpg4/bin . Eu tenho procurado por uma resposta sobre como procurar texto dentro de arquivos dentro de sub-pastas de um diretório pai usando grep . Todas as respostas falam sobre -r ou -R opções que eu não tenho disponíveis com a minha versão de grep .

    
por DemiSheep 27.06.2014 / 21:41

3 respostas

15

A sintaxe padrão (POSIX) é:

find /path/to/parent -type f -exec grep 'XXX' /dev/null {} +

(o /dev/null é para garantir que grep sempre imprima um nome de arquivo). Isso funcionará em todos os sistemas POSIX, incluindo o Solaris. Os únicos sistemas pós-90 conhecidos onde é sabido que não funcionam são sistemas GNU antigos (muito antigos).

O GNU inicialmente introduziu uma predicção -print0 e uma -0 em xargs em vez disso:

find /path/to/parent -type f -print0 | xargs -0 grep 'XXX' /dev/null

Existem agora algumas outras implementações que suportam isso, mas não o Solaris.

Acima, em teoria, você desejaria adicionar a opção -r para evitar a execução de grep se não houvesse arquivo, mas não é tão portátil e, nesse caso específico, não faz uma diferença funcional

    
por 27.06.2014 / 21:48
-1

Usando o GNU grep (se instalado):

ggrep -A3 -B23 'word' -R /log/

Isso verificará todos os arquivos na pasta se a expressão regular word for correspondida e mostrará a saída junto com o caminho do arquivo.

O GNU grep suporta o sinalizador -R .

    
por 07.02.2018 / 11:05
-1

Basta usar o ggrep que no solaris existe no caminho /usr/sfw/bin/ggrep da seguinte forma:
/usr/sfw/bin/ggrep -H 'search-term' <file-name>*
ele pesquisa seu termo de pesquisa em um grupo de nomes de arquivos que começam com uma palavra específica.

    
por 11.08.2018 / 07:47