Como retornar o nome do arquivo e o número da linha com find… -exec grep?

35

Ao usar find , como eu retorno o nome do arquivo e o número da linha ao procurar por uma string? Consigo retornar o nome do arquivo em um comando e os números de linha com outro, mas não consigo combiná-los.

Nomes de arquivos: find . -type f -exec grep -l 'string to search' {} \;

Números de linha: find . -type f -exec grep -n 'string to search' {} \;

    
por Danny_Joris 27.10.2012 / 22:31

3 respostas

42

A linha de comando -H força grep a imprimir o nome do arquivo, mesmo com apenas um arquivo.

% grep -n 7 test.in
7:7
% grep -Hn 7 test.in
test.in:7:7
   -H, --with-filename
          Print the filename for each match.

Observe que Kojiro diz em um comentário , isso não faz parte do padrão POSIX ; é no GNU e no BSD grep, mas é possível que alguns sistemas não o possuam (por exemplo, Solaris).

    
por 27.10.2012 / 22:51
20
find . -type f -exec grep -n 'string to search' /dev/null {} +

(ou com o GNU grep, veja a opção -H )

    
por 27.10.2012 / 22:50
-1

Se o seu grep for compatível com o sinalizador -r recursivo, isso resolve sua solicitação:

grep -rn "String to search " * 
    
por 18.07.2017 / 02:31

Tags