统计源码文件行数的小程序

这些天在公司一直在看一个开源包,由于某种原因突然想看下这个开源包到底写了多少行代码。简单的方法:一个个文件查看再利用计算器进行加法运算!但这方法也太笨了点吧,再说,源文件那么多,我又那么懒。

想来想去还是写个脚本吧,以后或许也还有用。

记得wc -l可以直接统计文件的行数,不过输出结果是类似于“86 a.cpp”这样的形式的,还得用cut把后面的文件名给去掉。这样只需把整个文件夹的文件扫描一遍即可得到最后想要的行数了。

不过还有两个问题:一个是文件夹里的子文件夹没被扫描到,因为循环时是判断为普通文件的才进行统计;另一个是由于源文件后缀形式多样,有.java,.c,.c++等等等,必须有参数把它们传进脚本里。

第一个问题好办,不就是个递归吗?可是由于本人对SHELL编程的熟悉程度不够,递归时如何返回值就搞了很久,一直用return却只是获取不到,不知何故!最后直接用一个全局变量解决了这个问题。

第二个问题最开始就想着把每个后缀名作为单独的参数传进去,这样就涉及到参数个数不确定的问题。知道有shift这个东东可以循环扫描参数,但是又不知道如何把它们保存下来。搞到最后还是直接用"c:java"这种形式做为一个参数传进去算了,再用awk进行分解,awk里又涉及到访问外部变量和循环语句等的使用,甚是蛋疼,查了一部分资料。

最终效果是这样的:

标签:
文章分类 Shell, Unix/Linux
4 comments on “统计源码文件行数的小程序
  1. sunny说道:

    好象用find命令就好了。比如 find . -name "*.cpp" | wc -l

    [回复]

  2. iamsunnysun说道:

    用find命令就可以了。find . -name "*.cpp" | wc -l

    [回复]

    colaghost 回复:

    我是用wc -l来统计行数的,不过其实这样不准,按照空格跟分格来的话应该更准确一些。

    [回复]

  3. Can I just say what a relief to discover someone who actually knows what theyre talking about on a internet. You really know how to bring an dilemma to light and make it important. Much more folks must read this and realize this side from the story. I cant believe youre not much more well-known because you truly have the gift.

    [回复]

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*