7

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

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

我想从 ./gen 文件夹中排除文件。我认为这与“修剪”有关,但我不知道该怎么做。

编辑 谢谢 ruakh,但他的代码不是我的最终解决方案,我不得不让它再次计算行数。如果有人想要,这是完成的事情:

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

2 回答 2

8

我无法使 ruakh 的解决方案发挥作用,最终得到了以下结果:

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

egrep还发现了一个基于 GNU find的有趣选项:

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
于 2012-07-18T16:21:43.553 回答
4

这个命令:

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

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

于 2012-07-18T15:38:19.440 回答