grep -r (ou -R) não pesquisa dentro de subpastas

grep -r (ou -R) não pesquisa dentro de subpastas

Já faz algum tempo que não uso Linux, mas sim Windows. No Windows sempre que quero procurar uma string em arquivos e arquivos dentro de subpastas eu faço (por exemplo para arquivos cs)

findstr /s /i /n "Thepattern" *.cs

ultimamente, descobri que você pode usar o grep no MINGW64 que é instalado ao usar o Git. Então eu tentei

grep --color -n -r "Thepattern" *.cs

Mas mesmo eu colocando -ra busca não inclui os subdiretórios.

O que estou fazendo de errado com o grep? e como deveria ser?

EDIT: Anaksunaman me forneceu a resposta correta:

grep --color -n -r --include=*.cs "Thepattern"

e várias outras opções :) Obrigado!

Responder1

Descobri que você pode usar o grep no MINGW64 que é instalado ao usar o Git.

Presumo que você esteja se referindo ao Git Bash.

O que estou fazendo de errado com o grep? E como deveria ser?

Você deveria tentar isso:

 grep --color -n -r --include=*.cs "ThePattern"

--include=deveria vir depois -r. Isso limitará os resultados aos arquivos que terminam com ".cs". Você também pode especificar um diretório se desejar, por exemplo:

grep --color -n -r --include=*.cs "ThePattern" ~/some/directory/'with spaces'

Neste caso, ~refere-se à pasta do seu perfil de usuário no Windows.

Além disso, assumindo que "ThePattern" é uma string literal, pode ser necessário incluir -ipara tornar as coisas insensíveis a maiúsculas e minúsculas, por exemplo:

 grep --color -n -i -r --include=*.cs "ThePattern"

Caso contrário, "ThePattern" não é o mesmo que, por exemplo, "Thepattern" e você poderá não obter nenhum resultado.

Observe que você sempre pode usar grep --helppara obter informações sobre opções adicionais.

informação relacionada