
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 grep
e outros comandos unix, consulte o manual ( man
)
Nesse caso man grep
diz 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