Eu tenho uma árvore de diretórios que consiste em vários milhares de subdiretórios, mas frequentemente preciso cumprimentar apenas um pequeno subconjunto desses diretórios. Como posso grep
apenas os subdiretórios que correspondem a um padrão?
Por exemplo, suponha que eu tenha esses subdiretórios nos quais eu quero grep:
...
...
...
/foo
/fooLib
/fooHandler
/fooGizmo
...
...
...
As ...
entradas acima representam os milhares de outros diretórios nos quais não quero entrar.
Supondo que eu esteja procurando por 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*
?
/foo
amigos? Em/foo
e/foo/bar
e/foo/bar/qux
e assim por diante, mas não/wibble/foo
? Dentro/foo
e/wibble/foo
mas não/foo/bar
? Em/foo
e/foo/bar
e/wibble/foo
mas não/elsewhere
?Respostas:
Você pode usar grep e encontrar a combinação como abaixo:
Ou você pode usar
Ou usando apenas grep
fonte
foo*
?grep -R "test" /foo*
) é exatamente o que estou fazendo agora, então vou aceitar.{}
e a barra invertida?tente,
grep foo* <other parts>
por exemplo:grep foo* -name "book*"
fonte
bar
todos os arquivos nos subdiretórios nomeadosfoo*
, deve ser assimgrep --recursive bar ./foo*/*
:?