grep no Windows 7 Argumento inválido

1

Estou usando o grep de Gnuwin32 no Windows.

Fazendo:

grep -r INSERT *.sql

Rendimentos:

grep: *.sql: Invalid argument

Alguma ideia do porquê?

    
por Mike 23.10.2015 / 16:29

3 respostas

2

De acordo com o Manual do Grep :

-r com grep é a pesquisa de diretório recursiva, portanto, para usá-lo, você especifica o diretório inicial, não uma máscara de arquivo.

por exemplo:

grep -r INSERT . examinaria todos os arquivos para INSERT, iniciando no diretório atual ( . ) e trabalhando recursivamente nas subpastas.

Para especificar a verificação de pasta recursiva e , especifique um curinga de arquivo para limitar pesquisas, você pode usar a opção --include :

grep -r --include "*.sql" INSERT .

Pergunta / informações semelhantes sobre o StackOverflow: Como faço para o grep recursivamente?

    
por 23.10.2015 / 18:22
2

Porque não há arquivo * .sql.

    
por 23.10.2015 / 17:24
1

grep é uma ótima ferramenta com alguns parâmetros interessantes. No entanto, como o próprio nome diz ( g pesquisa localmente um r egular e xpression e p rint) significa para combinar as coisas. Se o que você deseja é encontrar arquivos, use find .

Neste caso, parece que você quer procurar o texto INSERT nos arquivos que estão nesta árvore.

Para isso, você precisa fazer algo como:

find -name "*.sql" grep -h INSERT {} \;

find -name "*.sql" encontrará todos esses arquivos e, em seguida, grep -h imprimirá os que tiverem o texto INSERT neles.

Por que sua abordagem não estava funcionando?

Porque, dizendo grep -r ... *.sql , o bash tenta expandir esse *.sql antes de executar o comando. Mas nada corresponde a *.sql em seu diretório, então não funciona.

Você pode usar o parâmetro --include com um regexp, mas - na minha experiência - é bastante frágil.

    
por 23.10.2015 / 18:23