Grep
如何僅在關鍵字 grep 搜尋後顯示文件名?
我目前在一個目錄中有 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 {}