我知道我可以搜索一个字符串:
grep -n -d recurse 'snoopy' *
然后它显示包含该字符串的每个文件名和实例,如:
file/name.txt:23 some snoopy here
file/name2.txt:59 another snoopy there
file/name2.txt:343 some more snoopy
etc...
问题是,在很多事件中,列表很大。如何使它只显示包含字符串的实际文件名,没有重复项且没有出现?
仅限于:
file/name1.txt
file/name52.txt
file/name28293.txt
非常感谢您的帮助:)
答案 0 :(得分:14)
-l
标志(或者,在BSD和GNU grep
中,--files-with-matches
)做你想要的。
仅将包含所选行的文件名写入标准输出。每个搜索的文件都应写入一次路径名。如果搜索标准输入,则路径名为"(标准输入)"应在POSIX语言环境中编写。在其他语言环境中,"标准输入"可能会被那些更合适的地方所取代。
BSD和GNU都明确保证这将更有效。 (Older BSD版本说" ... grep
只会在找到匹配项之前搜索文件,从而使搜索成本更低[&34;,newer BSD和GNU说"扫描将在第一场比赛中停止"。)如果你不知道你拥有哪个grep
以及它有哪些选项,只需在shell上输入man grep
即可你应该得到联机帮助页。