Answers:
使用-l或--files-with-matches选项,其说明如下:
抑制正常输出;而是打印通常会从中打印输出的每个输入文件的名称。扫描将在第一个匹配项时停止。(
-l由POSIX指定。)
因此,您可以使用以下示例:
$ grep check * -lR
grep -rl "text to find" "/usr/share",效果很好!
find . -type f -exec grep -l check {} +
您可能不想使用在降级目录时-RGNU的现代版本grep遵循符号链接的选项。请从-r那里使用选项,因为自版本2.12(2012年4月)起,该选项不再遵循符号链接。
如果您的grep不是GNU版本或早于2.12版本,或者您需要将代码移植到非出血边缘GNU系统,请使用find上面的命令。
否则,您可以执行以下操作:
grep -rl check .
请勿使用*(因为这会忽略当前目录(仅在当前目录中)的隐藏文件,并且会导致名称以开头的文件出现问题-),请避免在参数后传递选项,因为这不能保证可以正常工作,具体取决于环境,不是便携式的。
尝试这个:
find . -type f | xargs grep -c check $1 | grep -v ":0"
至于grep标志...
-c 将返回一个文件名,后跟:和一个数字,该数字指示搜索字符串出现在给定文件中的次数。
-v将从第一次grep搜索中获取输出,过滤出结果为零的文件,并仅打印结果为非零的文件。
:0。最好做grep -v ':0$'。即使那样也会阻塞包含换行符的路径名。
grep -rin“ whatToFind” locationToFInd
例如$ grep -rin“ vihaan”。
将递归搜索并列出文件名以及其中带有“ vihaan”的对应行“。”。指当前目录。
find . -type f | grep "keyword" *
在当前目录中搜索。要从根目录查找,请指定/而不是.
grep -lR "text-to-find" <where-to-find> 也可以。
例如, grep -lR "NAVIGATE" .我们在当前目录NAVIGATE中的哪里找到单词.。