在Linux下列出包含指定字符串或正则表达式的文件名

在Linux下包含指定字符串或正则表达式的文件(仅列出文件名)

命令:grep -l <string_or_regex> <file_pattern>

其中-l参数(小写L)的含义如下:

man grep 写道
-l, --files-with-matches       Suppress  normal output; instead print the name of each input file from which output would normally have been printed.  The scanning will stop on the first match.

因为遇到第一个匹配之后就会停止文件内容的扫描,所以效率挺高。找到之后再用别的工具去看文件的具体内容。

举例:

grep -l SELECT NSI.LOG.2011-09-*

grep -l 'NssAddUser.*CRM' NSI.LOG.2011-08-*

grep -l 'NssAddUser.*CRM' NSI.LOG.2011-08-2*

[root@db1 logs]# grep -l 'NssAddUser.*CRM' NSI.LOG.2011-08-2*

NSI.LOG.2011-08-22-08

NSI.LOG.2011-08-22-09

NSI.LOG.2011-08-22-10

NSI.LOG.2011-08-23-09

NSI.LOG.2011-08-25-09

NSI.LOG.2011-08-25-10

NSI.LOG.2011-08-26-08

NSI.LOG.2011-08-26-09

[root@db1 logs]#