Grep

如何僅在關鍵字 grep 搜尋後顯示文件名?

  • March 7, 2015

我目前在一個目錄中有 n 個數據文件,每個文件最多有 1 行很長的數據。我的目錄結構是

director/
   data1.json
   data2.json
   data3.json

我知道這些文件中至少有一個包含我要查找的關鍵字,但是由於一行數據太長,它覆蓋了我的整個終端。僅在執行關鍵字 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 與 ack 結合使用。我發現ack速度更快。

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

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

引用自:https://serverfault.com/questions/57321