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

3

Eu 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 FILENAMOS que contêm uma correspondência.

Obrigado!

    
por Allan Bowe 06.09.2012 / 14:36

2 respostas

9

Você pode usar

grep -rl stringToSearch .

ou

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

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

Nesse caso, man grep diz que

-l, --files-with-matches Suppress normal output; instead print the name of each input file from which output would normally have been printed.
The scanning will stop on the first match.

Obviamente, como um comando bash, se sua string contiver caracteres ou espaços especiais, você terá que (em ordem) escapar deles e / ou cercar sua string com cotas

    
por 06.09.2012 / 14:37
1

"Grep -l" lhe dará 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
    
por 06.09.2012 / 14:54

Tags