我应该向 grep 传递哪些参数才能仅返回文件名?

我应该向 grep 传递哪些参数才能仅返回文件名?

我正在尝试使用 grep 在我的网络服务器上的一堆文件中查找特定的文本片段。没问题,只是它返回的信息比我想要的多得多!理想情况下,它只会返回文件列表,如果文本存在于文件中的多个位置,它只会列出文件名一次。

目前我正在使用这样的东西:

grep -ir essay_ "mysite"

在我网站的所有目录中对单词 essay_ 进行不区分大小写的递归搜索。它返回的内容是这样的:

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");

我想拿回来的是:

mysite/dot/contest_declaration.php
mysite/dot/print_declaration.php

答案1

-l,--files-with-matches
抑制正常输出;相反,打印通常会打印输出的每个输入文件的名称。扫描将在第一个匹配处停止。 (-l 由 POSIX 指定。)

GNU 实现手册grep。如上所述-ll对于列表) 是标准且可移植的,--files-with-matches(通常是长选项)是 GNU 扩展。

答案2

您需要-l(el) 或--files-with-matches命令行开关

抑制正常输出;相反,打印通常会打印输出的每个输入文件的名称。扫描将在第一个匹配处停止。 (-l 由 POSIX 指定。)

相关内容