Existe um comando que permita pesquisar uma palavra-chave em arquivos em um diretório com extensão específica?
A corda grep -irn "string" ./path
dá uma pesquisa recursiva para todos os arquivos no diretório ./path
. Meu requisito específico é procurar em todos os arquivos ./path
com uma extensão como*.h
"*.h"
aspas.foobar.h
no diretório atual e tente novamente.S et (ligar) a sh ell opt iónica
globstar
com o comandoIsso fará com que,
**
como componente do nome do arquivo, signifique tudo aqui e abaixo. Issopath/**
significa tudo nopath
diretório e seus subdiretórios . (Você não precisa digitar./
aqui.) Em seguida, você pode usarpara pesquisar todos os
.h
arquivos dentro e abaixopath
.Você pode u Nset opções com
shopt -u
.fonte
fonte
-exec
...+
é bom também."string"
na sua resposta!Se você pode instalar algo em sua máquina, sugiro usar o ack .
Você pode fazer exatamente o que precisa com ele e muito mais. Para o seu caso de uso, você pode:
Para saber quais filtros de arquivo são suportados nativamente, execute o comando
ack --help=type
.fonte
Que tal este?
Explicação:
find
comandofind
comandofind
com-exec
, este é o especificador de fim de comandofonte
"*.h"
funciona? Eu teria pensado que precisava ser'*.h'
Se você estiver usando o gnu grep, ele possui uma bandeira que faz exatamente o que você deseja:
embora eu não ache que esteja disponível em outros greps.
fonte