2012-08-07 98 views
1

我需要一個shell腳本採取的兩個輸入shell腳本中找到數

    它必須搜索
  1. 主目錄和
  2. 模式中進行搜索的目錄和輸出數搜索模式主目錄所有文件(.c和.h文件)

它必須打印在主目錄&每個子目錄中找到的模式的數量。

main dir --> Total pattern found = 5 
    | 
    sub dir --> 3 
    | 
    sub dir --> 2 
+0

計算事物的一種方法是使用'wc'命令;例如如果您可以讓您的搜索每行生成一個文件,則'wc -l'會打印行數(因此會打印文件數量)。 – 2012-08-07 06:02:29

回答

0

這應做到:

#!/bin/sh 

grep -rl "$1" . | sed -r 's/\/[^\/]+$//' | sort | uniq -c 

其工作原理如下:

  • 首先找到使用grep
    • -r搜索中的所有文件中的說法$1供應格局當前目錄.和所有su bdirectories
    • -l只輸出具有文本的圖案匹配
  • filename從所有輸出除去,從而只path(即,目錄)保持然後
  • 的路徑被分類和文件的path/filename計數。

它的輸出將看起來像這樣:

 2 . 
     3 ./sub_dir1 
     1 ./sub_dir2 
     6 ./sub_dir2/a_sub_sub_dir 

第一列是在一個目錄中的模式的匹配的量,第2欄是該目錄的名稱(.是主目錄) 。

+0

嗨,這工作對我來說,但在shell腳本我有這個命令作爲一個單獨的文件,但我將如何輸入模式到這個文件 – user1580988 2012-08-07 13:03:46

+0

我編輯腳本,現在可以運行一個參數。 – Sicco 2012-08-07 13:08:34

+0

此答案解決您的問題嗎? – Sicco 2012-08-15 15:45:20