一句shell命令搞定代码行数统计
发布日期:2021-06-28 22:17:45 浏览次数:2 分类:技术文章

本文共 1612 字,大约阅读时间需要 5 分钟。

语法:wc [选项] 文件…

说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。

该命令各选项含义如下:

  - c 统计字节数。

  - l 统计行数。

  - w 统计字数。

这些选项可以组合使用。

输出列的顺序和数目不受选项的顺序和数目的影响。

总是按下述顺序显示并且每项最多一列。

行数、字数、字节数、文件名

如果命令行中没有文件名,则输出中不出现文件名。

例如:

$ wc - lcw file1 file2

4 33 file1
7 52 file2
11 11 85 total

举例分析:

1.统计demo目录下,js文件数量:

find demo/ -name "*.js" |wc -l

2.统计demo目录下所有js文件代码行数:

find demo/ -name "*.js" |xargs cat|wc -l 
或 
wc -l `find ./ -name "*.js"`|tail -n1

3.统计demo目录下所有js文件代码行数,过滤了空行:

find /demo -name "*.js" |xargs cat|grep -v ^$|wc -l

今天面试时,突然被面试官问到怎样用shell命令搞定某个文件夹下java代码行数的统计。

想了一下,基本思路就是找到这个文件夹下面的所有java文件,然后每个文件统计一下代码,外层套个for循环,叠加一下结果,就拿到想要的结果了。

不过显然面试官希望我用一句shell搞定,当场晕菜了,没搞定。回来想了一下,其实确实不是啥太难的问题。

 

最粗略版

Shell代码  
  1. find . -name "*.java"|xargs wc -l|grep "total"|awk '{print $1}'  
  2. find . -name "*.java"|xargs cat|wc -l    #Output:37634  

上面的两句效果一样,只不过第二种是先利用cat将多个java文件的内容合并输出了。然后再统计。

不过两个都有共同的毛病——连文件里面的空行都给统计进去算作一行了。

去除空行版

Shell代码  
  1. find . -name "*.java"|xargs cat|grep -v ^$|wc -l    #Output:36335  
这个版本靠谱一些了,可以看到去掉空行之后的统计结果变为了:36335,比上个版本干掉了1299行的空行。。。 

但是,java代码还有注释呢啊?!Fuck,还得干掉注释!

去除注释版

Shell代码  
  1. # exclude the lines begin with //  
  2. find . -name "*.java"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l    #Output:36064  

好,这个方法发现,以//开头的注释有36335-36064=271行。这里需要注意的是,注释行未必就以//作为开头,可能N个空格之后才开始的的//,所以匹配时需要加上上面的^\s*放在开头。

大功告成啦?扯淡!!!

java里面注释好几种风格,再给你看看这个非常常见的注释,还是会在统计结果里面

Java代码  
  1. /** 
  2.  * @author xxx 2012-6-15 下午3:19:47 
  3.  */  

咋搞?这种注释我还真没想好怎么方便的除去,简单粗暴的方法但是可以在上面grep的参数里面再加入3个正则,分别去除以/**、*、*/开头的行。不过我自己想着都觉得挫。不知道有没有更好的办法了。

原文链接:

http://www.cnblogs.com/fullhouse/archive/2011/07/17/2108786.html

http://hittyt.iteye.com/blog/1700584

转载地址:https://blog.csdn.net/yhhwatl/article/details/52623879 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:gcc 编译C
下一篇:兼容iOS 10:配置获取隐私数据权限声明

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月12日 23时51分53秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

安卓前端开发框架!轻松获得一线大厂面试offer,附答案 2019-04-29
安卓前端开发!Android性能优化之APK优化,赶快收藏备战金九银十! 2019-04-29
安卓定制系统开发!这是一份面向Android开发者的复习指南,系列篇 2019-04-29
安卓客户端开发!如何试出一个Android开发者真正的水平?分享PDF高清版 2019-04-29
安卓平板app开发!实战讲述Flutter跨平台框架应用,附大厂真题面经 2019-04-29
安卓开发包!大佬手把手教你如何仿写出大厂的APP,含BATJM大厂 2019-04-29
Android事件分发机制及设计思路,先收藏了 2019-04-29
Android事件分发机制收藏这一篇就够了,不吃透都对不起自己 2019-04-29
Android内存泄漏总结,offer拿到手软 2019-04-29
Android内存泄漏总结,成功拿下大厂offer 2019-04-29
来看看移动端小程序技术的前世今生!讲的明明白白! 2019-04-29
来看看这份超全面的《Android面试题及解析》,大厂面经合集 2019-04-29
4面字节跳动拿到Offer,已拿到offer 2019-04-29
4面字节跳动拿到Offer,真香! 2019-04-29
4面阿里拿到P7Offer,赶紧收藏! 2019-04-29
6年老Android面经总结,大牛最佳总结 2019-04-29
7年老Android一次坑爹的面试经历,赶快收藏备战金九银十! 2019-04-29
Android-App的设计架构经验谈,聪明人已经收藏了! 2019-04-29
Android-Camera内存问题剖析,小白也能看明白 2019-04-29
AndroidHook机制连简单实战都不会凭什么拿高薪?满满干货指导 2019-04-29