grep não recursa

5

Sempre que eu uso o grep com a opção gnuwin32 do recurse -r e inclua um padrão glob para os arquivos pesquisarem (por exemplo, *.c ), nenhum arquivo nos subdiretórios é pesquisado. Eu estou usando o mais recente grep do gnuwin32.

Especificamente, eu estava procurando pela string "iflag" em todos os meus arquivos de código-fonte em um diretório.

grep -r iflag *.c
    
por Cody Piersall 28.10.2013 / 22:26

2 respostas

3

A opção -r do Grep (que é a mesma das opções -R , --recursive , -d recurse e --directories=recurse ) usa um nome de diretório (ou padrão) como argumento . O comando que você está tentando executar deve ser interpretado como "Iniciando no diretório de trabalho atual, recurse todos os diretórios que correspondam ao padrão * .c. Em cada um desses diretórios procure todos os arquivos pela string iflag."

    
por 29.10.2013 / 18:35
4

Não sei por que a flag recurse não funciona, mas aqui está uma solução que funciona para mim. Basta dizer ao grep para pesquisar primeiro cada tipo de arquivo (especifique apenas * para tipo de arquivo) e depois filtrá-lo com a opção --include . por exemplo,

grep -r regexp-to-find * --include=*.c

Editar

Este é realmente o comportamento esperado do grep e não tem nada a ver com a sua execução no Windows. Confira a resposta de HairOfTheDog para o porquê.

    
por 28.10.2013 / 22:26

Tags