2010-07-10 67 views
3

我想確定哪個頭聲明瞭特定的功能。我使用grep來查找函數使用的實例;現在,我想找到哪個頭文件包含在所有文件中。我知道comm utility;但是,它只能比較兩個排序的文件。是否有一個Unix實用程序可以找到任意數量的未排序的文件之間的共同線,還是必須寫我自己的?找到幾個文件共同的線

回答

0
cat *.c | sort | uniq -c | grep -e '^ *COUNT #include' 

其中COUNT是傳遞給cat文件的數量。在玩耍中,我使用這個變體,看看有什麼文件,我#包括至少10倍:

cat *.c | sort | uniq -c | grep -e '^ *[0-9][0-9]\+ #include' 
+0

這將不包括其間接包含的頭(文件foo.c包括foo.h中,其中包括bar.h ,而baz.c包含baz.h,其中包含bar.h)。 – Borealid 2010-07-10 04:45:48

+0

是的,但建議的通訊也不會。我把它作爲依賴嚴格平等的許可,並忽略包括其他標題的標題。如果沒有一些幫助,不匹配的空白或評論將會挫敗'uniq -c'。 – drawnonward 2010-07-10 04:49:29