我正在尝试使用 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
。如上所述-l
(l
对于列表) 是标准且可移植的,--files-with-matches
(通常是长选项)是 GNU 扩展。
答案2
您需要-l
(el) 或--files-with-matches
命令行开关
抑制正常输出;相反,打印通常会打印输出的每个输入文件的名称。扫描将在第一个匹配处停止。 (-l 由 POSIX 指定。)