grep para o conteúdo do arquivo, mas retorne o nome do arquivo

grep para o conteúdo do arquivo, mas retorne o nome do arquivo

Preciso da sintaxe GREP para a seguinte tarefa (estou em um sistema operacional LINUX):

consultando TODOS os arquivos no diretório CURRENT que contêm STRING, mas listando apenas os FILENAMES que contêm uma correspondência.

Obrigado!

Responder1

Você pode usar

grep -rl stringToSearch .

ou

 find . -type f -exec grep -l stringToSearch {} \;

Para mais informações sobre grepe outros comandos unix, consulte o manual ( man)

Nesse caso man grepdiz que

-l, --files-with-matches Suprime a saída normal; em vez disso, imprima o nome de cada arquivo de entrada do qual a saída normalmente teria sido impressa.
A varredura irá parar na primeira partida.

Obviamente, como um comando bash, se sua string contém caracteres ou espaços especiais, você deve (em ordem) escapá-los e/ou cercar sua string com cotas

Responder2

"Grep -l" fornecerá a lista de nomes de arquivos.

> echo "hello" > test_file1.list
> echo "hello2.." > test_file2.list
> echo "xyz" > test_file3.list


> grep "hello" test_file*list

test_file1.list:hello
test_file2.list:hello2..


> grep -l "hello" test_file*list
test_file1.list
test_file2.list

informação relacionada