行计数 - 如何排除文件夹?

时间:2012-07-18 15:31:32

标签: bash

我正在使用bash来计算项目中的源代码行数。这是代码:

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

我想从./gen文件夹中排除文件。我认为这与“修剪”有关,但我无法弄清楚如何做到这一点。

修改 谢谢你,但是他的代码不是我的最终解决方案,我不得不重新计算一下。如果有人想要的话,这是完成的事情:

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

2 个答案:

答案 0 :(得分:6)

我无法让ruakh的解决方案工作,最终取而代之的是:

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

还根据GNU find找到了一个有趣的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

答案 1 :(得分:4)

此命令:

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

将打印*.java内部所有.个文件的路径,减去./gen内某些文件的路径。