【发布时间】:2021-08-13 10:55:45
【问题描述】:
我使用以下 Bash 脚本来计算我的一个项目中的代码行数:
echo "--- CLIENT"
cd "/mypath/client"
# Count classes:
a=`find . -name \*.java -print | wc -l`
echo ""
echo "Number of Java classes: $a"
# Total count:
b=`find . -name \*.java -exec cat {} \; | wc -l`
echo ""
echo "Java lines: $b"
c=`find . -name \*.css -exec cat {} \; | wc -l`
echo ""
echo "CSS lines: $c"
d=`find . -name \*.json -exec cat {} \; | wc -l`
echo ""
echo "JSON lines: $d"
f=$((`find . -name \*.h -exec cat {} \; | wc -l` + `find . -name \*.m -exec cat {} \; | wc -l`))
echo ""
echo "iOS Objective-C lines: $f"
echo ""
echo "--- SERVER"
cd "/mypath/server"
# Count classes:
h=`find . -name \*.java -print | wc -l`
echo ""
echo "Number of Java classes: $h"
# Total count:
i=`find . -name \*.java -exec cat {} \; | wc -l`
echo ""
echo "Java lines: $i"
echo ""
echo "Total lines of code: $((b + c + d + e + f + i))"
cd ~
只要可以通过这种方式搜索所有源代码,此脚本就可以正常工作。现在我有一个不同的用例:一些源代码仍然可以通过这个脚本访问,其中一些在压缩的 zip 文件中(位于“/mypath/client”的各个子文件夹中)。这些 zip 文件可以在根目录或其中的各种子文件夹中包含源代码。
我想可以调整我的脚本以考虑计数中的压缩文件,但我不知道该怎么做。
【问题讨论】:
-
为简化起见,我的答案只考虑如何修改“a=
find . -name \*.java -print | wc -l
”这一行就足够了,其他的一切都会随之而来。 -
您可以将 zip 特定部分添加到您的脚本中。类似
j=`find . -name \*.zip -exec unzip -l {} \; | grep '\.java$' | wc -l`
。
标签: bash