语法: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

一句shell命令搞定代码行数统计相关推荐

  1. 一行shell命令实现代码行数统计

    一行命令实现代码行数统计     1. 基本版 find . -name "*.cpp"|xargs wc -l|grep "total"|awk '{prin ...

  2. phpstorm统计程序行数_Python 实现代码行数统计

    快来算一算你写了多少行代码 前面我们一直在介绍图形界面,这次换个口味,在命令行实现代码行数统计程序.本程序共 135 行,其中 18 行空行.110 行有效代码.7行注释,大小为 7.71 KB. 主 ...

  3. python 代码行数统计工具_使用Python设计一个代码统计工具

    问题 设计一个程序,用于统计一个项目中的代码行数,包括文件个数,代码行数,注释行数,空行行数.尽量设计灵活一点可以通过输入不同参数来统计不同语言的项目,例如: # type用于指定文件类型 pytho ...

  4. Svn的代码行数统计工具statsvn以及使用

    Svn代码行数统计 代码工具svnstat svnstat.jar的下载路径 使用方法 将下载好的jar文件放于本地svn版本库的根目录下,即.svn文件夹的同级目录下. 新增文本文件,内容为 svn ...

  5. Visual studio代码行数统计

    Visual studio代码行数统计 Visual Studio中的搜索功能支持正则表达式(虽然语法比较诡异),我们完全可以通过正则表达式来遍历整个解决方案从而获得代码行数. ^:b*[^:b#/] ...

  6. python显示代码行数_python实现的代码行数统计代码

    python实现的代码行数统计代码 ''' Author: liupengfei Function: count lines of code in a folder iteratively Shell ...

  7. 字符串处理算法(五)多线程实现代码行数统计。[风林火山]

    实现如下: //文件类型 enum E_FILETYPE {E_C,E_JAVA };//文件行数信息 struct T_CodeFileMsg {int nTaskId; //任务Idstring ...

  8. python代码行数统计工具_Python实现代码行数统计工具的功能(实例)

    本篇文章给大家带来的内容是关于Python实现代码行数统计工具的功能(实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们经常想要统计项目的代码行数,但是如果想统计功能比较完善 ...

  9. 程序员年终总结----git合入代码行数统计

    git代码行数统计 //git上所有合入代码统计 git log --author="author" --pretty=tformat: --numstat | gawk '{ a ...

最新文章

  1. Transformer 超详细解读,一图胜千言
  2. 怎么发送文件到服务器端,使用HttpClient发送文件流到服务器端
  3. JVM源码分析之javaagent原理完全解读
  4. Android 系统(36)---Android O、N版本修改dex2oat编译选项
  5. 钉钉新增“下班勿扰”功能:次日上班前不接受任何消息!
  6. linux mem cache,Linux内存:MemTotal、MemFree、MemAvailable三者区别
  7. 一款PO VO DTO 转换神器,求求你别在到处找工具类了!
  8. 为啥程序员下班后只关显示器从不关电脑?看看各大网站的答案
  9. 心跳太快对身体带来影响?4种方法来减速!
  10. 如何进行接口参数化?
  11. Apache Zeppelin:可能是开源届最好的Flink开发平台
  12. 解读新零售:什么叫做人货场的重构
  13. 7个程序员常用的接单平台推荐
  14. mysql maven 依赖关系_Maven依赖总结
  15. 2019世界顶级黑科技将在这里,跟大家见面
  16. 普元与达梦的多数据源配置
  17. Java阻塞队列-BlockingQueue介绍及实现原理
  18. Allegro·芯片GND引脚铺铜问题及解决方案)
  19. 计算机语言翻译的情诗,经典唯美爱情诗句的英文翻译
  20. matlab三体运动(仿真动画)

热门文章

  1. 第四方聚合支付平台有哪些
  2. 卡巴斯基 2050.earth 源码分享——第一部分
  3. 银行ATM存取款系统(C语言实现)
  4. 深度解析Linux读写锁逻辑
  5. Python爬虫编程思想(103):项目实战--抓取QQ空间说说的内容
  6. 网络安全的内容有哪些,需要学哪些知识点
  7. OSChina 周四乱弹 ——过节上班没关系,老王他休息!
  8. 专业解析CCD和CMOS摄像机哪个更优秀
  9. Oracle 创建视图View 报错“ORA-12704: character set mismatch” 使用union语句
  10. 学霸君是怎么倒下的?