Linux下使用sh脚本统计指定目录下的所有代码行数

本文介绍了一种在Linux环境下统计指定目录下不同类型代码文件(如.c, .cpp, .cc, .h, .py, .java)行数的方法,通过find、xargs和wc-l命令组合实现。并提供了一个 Bash 函数,方便对各类型代码行数进行累加计算。示例中展示了在'hypatia'目录下各类型代码的行数统计结果。
摘要由CSDN通过智能技术生成

使用以下这条脚本语句可以获得DIR目录下的所有FILETYPE(如*.c、*.cc等)代码行数。

 sudo find ${_DIR} -name ${_FILETYPE} |xargs cat|grep -v ^$|wc -l

其中,grep -v ^将空行排除,xargs的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。

可以把这条指令写成如下函数来进行调用,同时对代码的行数进行累加。

_DIR=$1
cat_ret()
{
    sudo find ${_DIR} -name $1 |xargs cat|grep -v ^$|wc -l 
}

ret=$(cat_ret "*.c")
cnt=$ret
echo ".c文件代码行数:$ret"

ret=$(cat_ret "*.cpp")
cnt=$(( $cnt + $ret ))
echo ".cpp文件代码行数:$ret"

ret=$(cat_ret "*.cc")
cnt=$(( $cnt + $ret ))
echo ".cc文件代码行数:$ret"

ret=$(cat_ret "*.h")
cnt=$(( $cnt + $ret ))
echo ".h文件代码行数:$ret"

ret=$(cat_ret "*.py")
cnt=$(( $cnt + $ret ))
echo ".py文件代码行数:$ret"

ret=$(cat_ret "*.java")
cnt=$(( $cnt + $ret ))
echo ".java文件代码行数:$ret"

echo "文件总行数:$cnt"

使用脚本时,参数为要查找的目录,结果如下:

$ ./lineNumber.sh hypatia
.c文件代码行数:957
.cpp文件代码行数:3151
.cc文件代码行数:505240
.h文件代码行数:453520
.py文件代码行数:766252
.java文件代码行数:0
文件总行数:1729120

参考资料:https://blog.csdn.net/tianmohust/article/details/7061512?utm_term=linux%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8B%E7%9B%AE%E5%BD%95%E4%B8%8B%E6%9C%89%E5%A4%9A%E5%B0%91%E8%A1%8C%E4%BB%A3%E7%A0%81&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduweb~default-5-7061512&spm=3001.4430

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值