Que parâmetros eu passo para o grep para retornar apenas nomes de arquivos?

5

Estou tentando usar o grep para encontrar uma parte específica do texto em vários arquivos no meu servidor web. Não tem problema, exceto que ele retorna muito mais informações do que eu quero! Idealmente, apenas retornaria uma lista de arquivos, e se o texto existir em mais de um lugar no arquivo, ele apenas listaria o nome do arquivo uma vez.

Atualmente estou usando algo assim:

grep -ir essay_ "mysite"

para fazer uma pesquisa recursiva sem maiúsculas e minúsculas para a palavra essay_ em todos os diretórios do meu site. O que ele retorna é algo assim:

mysite/dot/contest_declaration.php:$questions = $db->get_results("SELECT * FROM dot_essay WHERE active = 1 order by display_order asc");
mysite/dot/contest_declaration.php:     $db->query("DELETE FROM dot_essay_xref WHERE entry_id = $svar_entry_id");
mysite/dot/contest_declaration.php:     $id = $question->essay_id;
mysite/dot/contest_declaration.php:     $answer = ${"essay_$id"};
shoppermarketexpo/dot/print_declaration.php:        $questions = $db->get_results("SELECT * FROM dot_essay WHERE active = 1");

O que eu gostaria de receber é:

mysite/dot/contest_declaration.php
mysite/dot/print_declaration.php
    
por EmmyS 25.03.2011 / 17:06

2 respostas

9
   -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.   (-l  is  specified  by
          POSIX.)

do grep manpage

    
por 25.03.2011 / 17:14
2

Você deseja as chaves de linha de comando -l (el) ou --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. (-l is specified by POSIX.)

    
por 25.03.2011 / 17:15