如何查找包含字符串的所有文件?

时间:2014-09-01 11:11:22

标签: command-line grep find

我正在使用这个

# cat *.php* | grep -HRi error_reporting

这是我的结果

(standard input):$mosConfig_error_reporting = '0';
(standard input):error_reporting(E_ALL);

如何找出包含结果的文件?

1 个答案:

答案 0 :(得分:2)

使用-l选项仅显示文件名:

grep -il "error_reporting" *php*

对于递归,您可以使用--include来指示您要查找的文件:

grep -iRl --include=*php* "error_reporting" *

但是如果你想显示行号,那么你需要使用-n,因此-l不会单独工作。这是一种解决方法:

grep -iRn --include="*php*" "error_reporting" * | cut -d: -f-2

find . -type f -name "*php*" -exec grep -iHn "error_reporting" {} \; | cut -d: -f-2. 

剪切部分删除匹配的文本,因此输出如下:

file1:line_of_matching
file2:line_of_matching
...

来自man grep

  

-l <​​/ strong>, - with-matches-matches

     

抑制正常输出;而是打印每个输入的名称   通常打印输出的文件。扫描   将在第一场比赛中停止。 (-l由POSIX指定。)

     

<强> - 包括= GLOB

     

仅搜索基本名称与GLOB匹配的文件(使用通配符)   如--exclude所述进行匹配。

     

-n , - line-number

     

在每行输出中添加基于1的行号   输入文件。 (-n由POSIX指定。)