如何仅在关键字grepsearch后显示文件名?

我目前在一个目录中有n个数据文件,每个文件至多有一行非常长的数据。 我的目录结构是

director/ data1.json data2.json data3.json 

我知道这些文件中至less有一个包含了我正在寻找的关键字,但是由于这一行数据太长,它覆盖了我的整个terminal。 只有在执行关键字grep后,我如何才能得到文件名? 我使用的grep命令是:

 grep keyword *.json 

-l参数应该做你想要的。

  -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. (-l is specified by POSIX.) 

您可以将xargs与–null和grep或–print0结合使用。 我发现速度更快。

grep -lr --null searchterm * | xargs -I {} -0 echo {}

ack -lr --print0 searchterm * | xargs -I {} -0 echo {}