Grep列表文件名和行号

您好我正在尝试使用grepsearch我的rails目录。 我正在寻找一个特定的单词,我想grep打印出文件名和行号。 有一个grep的标志,将为我做这个? 我一直在尝试使用-n和-l的组合,但是这些都是打印没有数字的文件名,或者只是倾倒出大量的文本到terminal,这是不容易阅读。

例如:

grep -ln "search" * 

我是否需要将它连接到awk?

我认为-l限制性太强,因为它会抑制-n的输出。 我会build议-H (– --with-filename ):打印每个匹配的文件名。

 grep -Hn "search" * 

如果输出太多,请尝试-o仅打印匹配的部分。

 grep -nHo "search" * 

grep -rin searchstring * | cut -d":" -f1-2

这就是说,recursionsearch(在本例中为string“searchstring”),忽略大小写,并显示行号。 该grep的输出将如下所示:

/path/to/result/file.name:100: Line in file where 'searchstring' is found.

接下来,我们使用冒号“:”作为字段分隔符将该结果input到cut命令,并显示字段1到2。

当我不需要行号时,我经常使用-f1 (只是文件名和path)。 然后pipe它到uniq,所以我只看到每个文件名一次像这样:

grep -ir searchstring * | cut -d":" -f1 | uniq

我喜欢使用:

grep -niro 'searchstring' <path>

但那只是因为我总是忘记其他的方式,我不能忘记罗伯特德grep -尼罗出于某种原因:)