Como posso usar grep
para mostrar apenas nomes de arquivos (sem correspondências em linha) no Linux?
Normalmente, estou usando algo como:
find . -iname "*php" -exec grep -H myString {} \;
Como posso obter os nomes dos arquivos (com caminhos), mas sem as correspondências? Eu tenho que usar xargs
? Não vi uma maneira de fazer isso na minha grep
página de manual.
vim $(grep -rl Something app/)
Respostas:
A opção padrão
grep -l
(que é um L minúsculo) pode fazer isso.Do padrão Unix :
Você também não precisa
-H
neste caso.fonte
grep -nrl "some text" .
quando se olha para o texto em um conjunto de subpastas recursivamenteNa
grep(1)
página do manual:fonte
Para uma pesquisa simples de arquivos, você pode usar o grep
-l
e as-r
opções:Toda a pesquisa é feita pelo grep. Obviamente, se você precisar selecionar arquivos em algum outro parâmetro, find é a solução correta:
A
execdir
opção cria cada comando grep por cada diretório e concatena os nomes de arquivos em apenas um comando (+
).fonte
Sua pergunta Como posso obter os nomes dos arquivos (com caminhos)
O seu exemplo de sintaxe encontra. -iname "* php" -exec grep -H myString {} \;
Minha sugestão de comando
A saída deste comando no meu sistema operacional Linux:
Como você precisa do nome do arquivo com o caminho, aproveite!
fonte