2012-10-28 65 views
4

我有一個目錄樹,其中有一堆文件夾和子文件夾以及這些子文件夾中的一堆文件。我需要在每個文件中獲得單詞「Hello」的計數,並將結果顯示爲'File'a'has'Hello'n次','File'b'''Hello'm times'等等。我如何在Linux中編寫腳本,以便我可以在每個文件中獲得單詞hello的單詞計數。瀏覽網頁後,我嘗試了一些使用'wc'的grep組合,但是這給了我所有文件夾中所有文件的總計數。得到所有文件中的單詞計數

感謝

回答

2

嘗試這樣:

find . -type f | xargs -n1 grep "Hello" -c

添加-type ffind確保它只返回文件,而不是目錄。將-n1添加到xargs可以使find返回的每個文件都獲得自己的grep調用,以便您可以獲得每個文件的計數。 grep-c參數返回匹配的數量而不是每個匹配。

上面的表達式會計算其中有'Hello'的行數。如果你需要Hellos的總數,而不僅僅是擁有Hello的行數,你需要做更復雜的事情。您可以使用grep上的-o選項來打印行的匹配部分,然後將其與wc -l結合以獲取總髮生次數。

+0

看起來不錯尋找的*行*含 「你好」 的數量,但我仍然擔心字符串在一行中出現多次的情況。在這種情況下,grep只會計數一個。 @ user1455116,那是你想要的嗎? –

+0

好點...我會更新我的答案。 –

0

使用grep語法是:

grep -Rc "Hello" your_dir/ 

我還建議ack作爲最好的替代grep

ack -lc "Hello" your_dir/ 
相關問題