Gostaria de listar os arquivos de forma recursiva e exclusiva que contêm a palavra especificada.
Exemplo : Verificando a palavra 'check', normalmente faço é um grep
$ grep check * -R
Mas como existem muitas ocorrências dessa palavra, recebo muita saída. Então, eu só preciso listar os nomes de arquivos que contêm a palavra de pesquisa especificada. Eu acho que algum truque com find
e xargs
seria suficiente aqui, mas não tenho certeza.
Alguma ideia?
fonte
grep -rl "text to find" "/usr/share"
e funcionou muito bem!Você provavelmente não deseja usar a
-R
opção que, nas versões modernas do GNU,grep
segue links simbólicos ao descer diretórios. Use a-r
opção ali, que desde a versão 2.12 (abril de 2012) não segue mais links simbólicos.Se o seu grep não for o GNU, ou for anterior à versão 2.12, ou se você precisar que seu código seja portátil para sistemas GNU sem borda externa, use o
find
comando acima.Caso contrário, você pode fazer:
Não use
*
(pois isso omitiria arquivos ocultos no diretório atual (e somente no diretório atual) e causaria problemas para arquivos cujo nome começa com a-
), evite passar opções após argumentos, pois não é garantido que funcione dependendo do ambiente e não é portátil.fonte
Tente o seguinte:
Quanto às
grep
bandeiras ...-c
retornará um nome de arquivo seguido por: e um número indicando quantas vezes a string de pesquisa aparece no arquivo especificado.-v
coletará a saída da primeiragrep
pesquisa, filtrará os arquivos com zero resultados e imprimirá apenas os arquivos com resultados diferentes de zero.fonte
:0
. É melhor fazergrep -v ':0$'
. Até isso sufocará em nomes de caminho que contenham nova linha (s).grep -rin "whatToFind" locationToFInd
por exemplo, $ grep -rin "vihaan".
irá procurar e listar recursivamente os nomes dos arquivos e as linhas correspondentes que contêm "vihaan" neles "." refere-se ao diretório atual.
fonte
procure no diretório atual. Para pesquisar a partir da raiz, especifique em
/
vez de.
fonte
grep -lR "text-to-find" <where-to-find>
também funciona bem.por exemplo,
grep -lR "NAVIGATE" .
onde encontramos a palavraNAVIGATE
no.
diretório atual.fonte
A lista de
.q
arquivos contém a palavra-chavetrim
fonte