2012-07-18 100 views
3

我使用bash來統計項目中的源代碼行數。這裏是代碼:行計數 - 如何排除文件夾?

#!/bin/bash 
find . -name '*.java' | xargs wc -l 
find . -name '*.xml' | xargs wc -l 

我想從./gen文件夾中排除文件。我認爲這與'修剪'有關,但我無法弄清楚如何去做。

編輯 Thankyou to ruakh,但他的代碼不是我的最終解決方案,我不得不再次計算行數。這裏是成品的事情,如果有人想它:

#!/bin/bash 
find . -path ./gen -prune -o -name '*.java' | xargs wc -l 
find . -name '*.xml' | xargs wc -l 
+0

wor KS也如果通過查找結果grep -v'正則表達式' – Kent 2012-07-18 15:47:14

回答

3

我不能讓ruakh的解決方案工作,並結束了,而不是執行以下操作:

find . -not -path '*/gen*' -a \(-name '*.java' -o -name '*.xml' \) 

還發現基於GNU一個有趣的egrep選項找到:

find a/ -regextype egrep -not -path '*/gen*' -a -regex '.*(java|xml)$' 

爲了計算行在匹配的文件中,您可以在最後粘貼xargs cat | wc -l

find . -not -path '*/gen*' -a \(-name '*.java' -o -name '*.xml' \) | xargs cat | wc -l 
+0

謝謝,這似乎是一個更完整的答案:) – 2012-07-19 08:00:26

4

此命令:

find . -path ./gen -prune -o -name '*.java' -print 

將打印路徑的所有*.java文件,這些文件裏面的某個地方.,減去那些地方里面./gen