我正在使用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
答案 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
内某些文件的路径。