关于bash:如何获取所有文件的名称(在一个目录中)包含一定的文本行?

How to get names of all the files (in one directory) contain a certain line of text?

例如:

我希望得到所有文件的名称

1
start on startup

/etc/init中。


我相信下面的技巧可以做到:

grep -ls 'start on startup' /etc/init/*

这将使您的/etc/init目录中的所有文件都变大,并且只打印出文件名,同时忽略任何错误(即/etc/init/ is a directory)。

这里有一篇文章解释了-l选项:grep只显示文件名

下面是解释-s选项的另一篇文章:grep省略文件/目录错误


你可以试试下面的grep命令,

1
2
$ cd /etc/init
$ grep -l"start on startup" *

通过一个命令,

1
$ grep -l"start on startup" /etc/init/*

来自man grep

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