2012-07-18 101 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