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

Tod*_*ies 7 bash

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

#!/bin/bash
find . -name '*.java' | xargs wc -l
find . -name '*.xml' | xargs wc -l
Run Code Online (Sandbox Code Playgroud)

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

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

#!/bin/bash
find . -path ./gen -prune -o -name '*.java' | xargs wc -l
find . -name '*.xml' | xargs wc -l
Run Code Online (Sandbox Code Playgroud)

Tho*_*hor 7

我无法让ruakh的解决方案工作,最终得到以下内容:

find . -not -path '*/gen*' -a \( -name '*.java' -o -name '*.xml' \)
Run Code Online (Sandbox Code Playgroud)

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

find a/ -regextype egrep -not -path '*/gen*' -a -regex '.*(java|xml)$'
Run Code Online (Sandbox Code Playgroud)

为了计算匹配文件中的行数,您可以坚持xargs cat | wc -l到最后:

find . -not -path '*/gen*' -a \( -name '*.java' -o -name '*.xml' \) | xargs cat | wc -l
Run Code Online (Sandbox Code Playgroud)