grep apenas subdiretórios padrão de correspondência

6

Eu tenho uma árvore de diretórios que consiste em vários milhares de subdiretórios, mas eu frequentemente preciso usar apenas um pequeno subconjunto desses diretórios. Como posso grep apenas os subdiretórios correspondentes a um padrão?

Por exemplo, suponha que eu tenha esses subdiretórios nos quais quero entrar:

...
...
...
/foo
/fooLib
/fooHandler
/fooGizmo
...
...
...

As entradas ... acima representam os milhares de outros diretórios em que não quero entrar.

Suponha que eu esteja procurando todas as instâncias de bar , se eu fizer isso:

grep -n --recursive bar *

Eu encontraria o que estou procurando, mas em todos os diretórios. Como posso pesquisar apenas nos subdiretórios que correspondem ao padrão foo* ?

    
por John Dibling 15.01.2013 / 16:35

2 respostas

9

Você pode usar a combinação grep e find conforme abaixo:

find /{foo,fooLib,fooHandler,fooGizmo} -type f -exec grep -l "test" {} \;

Ou você pode usar

find /foo* -type f -exec grep -l "test" {} \;

Ou usando somente o grep

grep -R "test" /foo*
    
por 15.01.2013 / 16:45
0

tente grep foo* <other parts> , por exemplo: grep foo* -name "book*"

    
por 15.01.2013 / 16:38

Tags