遞歸計算模式出現次數時刪除檔案名

遞歸計算模式出現次數時刪除檔案名

當我執行 grep 命令:

grep -rc 'PATTERN' .

它會列印出該模式出現的行數,但它看起來像這樣:

./hotel_232424.dat:234

等等...

我如何刪除該./hotel_232424.dat:零件並只列印出數字?

答案1

透過 GNU 實現grep,您可以使用-h/--no-filename選項。

$ grep -rc PATTERN .
./b:1
./a:0
./1/2/c:2
$ grep -rhc PATTERN .
1
0
2

手提式/標準等效項是:

$ find . -type f -exec grep -c PATTERN {} \;
0
2
1

但這意味著grep每個檔案運行一次調用。

相反,如果您想要出現的總數(此處為 1+2 = 3),您可以這樣做(可移植):

$ find . -type f -exec cat {} + | grep -c PATTERN
3

(請注意,如果某些文件在最後一行之後有資料(因此,非文字檔案),則可能會弄亂結果)

或者,有像你這樣的grep支持-r

$ grep -r PATTERN . | wc -l
3

相關內容