仅显示匹配文件的grep输出

257

如何使用grep命令只打印匹配的文件而不包含匹配条件所在的行?请提供相应的选项。

答案:使用-l选项可以只打印匹配的文件名,而不包含匹配条件所在的行。

1
通常我只在搜索调用特定函数或方法的文件时使用这个命令。 - Gearoid Murphy
使用案例(递归地在所有文件中搜索和替换foo->bar): sed -i 's/foo/bar/' grep -lR 'foo' - user323094
4个回答

404
grep -l 

(这是小写字母 L)


6
《O的危害性》信件本文是由计算机科学家埃德斯格·迪克斯特拉于1975年所写的一封信件,其题目为《O的危害性》(Letter O Considered Harmful)。这篇信件旨在批评使用某些编程语言中“O”的过度使用带来的不良影响。该信件对使用Fortran编程语言中subroutine与function的调用方法进行了批评,因为这种调用方法需要在参数传递时使用指针,而指针容易导致错误。迪克斯特拉建议代之以使用值传递的方式。“Letter O Considered Harmful”一文在计算机领域广为流传并引起了广泛回应,成为了计算机科学界一个著名的口号式标题。 - user234461

52

你可以使用类 Unix 的 -l 开关——通常是简洁和晦涩的——或等效的 --files-with-matches——更长更易读。

grep --help 命令的输出不易阅读,但它存在:

-l, --files-with-matches  print only names of FILEs containing matches

30

-l(小写的 L)。


4

还有一件非常重要的事情要记住。
为了更加精确,您需要指定类似以下的命令:
grep -l "模式" *


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接