一行Shell代码查找所有代码行数

最近写简历, 想算下自己的这个项目一共有多少行代码, 好方便在简历上展示. 本来想着一直用git管理代码, 顺便统计下好了. 结果竟然没有在git中找到单独统计行数的工具, 太出乎我意料了. 最近用Cmder挺方便, 就想用shell统计下代码行数, 应该就是一两个命令的事.

用Java, Python肯定可以实现, 但是感觉太重, 我只是想随便查查我的代码一共有多少行, 3秒钟就可以搞定的那种, 不想辛辛苦苦的写foreach循环, 递归调用, 然后可能还有各种边界条件要考虑.

嗯, 谷歌了好久, 我本来以为是用grep命令, 没想到是find命令, 当然用grep肯定也可以实现. 命令如下:

find . -name "*.cs" | xargs wc -l

逐一解释一下:

  • find : linux的查找命令, 查找符合条件的文件. 这里-name跟着”*.cs”, 就是表示所有以cs结尾的文件. -iname是大小写不敏感的, 比如-iname “*.cs”就是匹配所有以”*.cs”,”*.Cs”,”*.cS”,”*.CS”结尾的文件.
  • . : “.”在这里表示当前目录, 比如想要执行当前目录的某个文件, 就可以用”./executefile”.
  • | : 管道符号,表示把前面找到结果传到下一个命令.
  • xargs : 如果find找到的结果数目太大,可能会产生错误,错误信息通常是”参数列太长”或”参数列溢出”. xargs命令每次只获取一部分文件而不是全部. 但是这里还有些不同,我的文件较小,不会出现溢出情况,就试了下find . -name “*.cs” | wc -l, 但是这次传出的结果是42,是一共有多少文件以”*.cs”结尾, 这就让我有点搞不懂了. 谷歌了一下, 没有查出让我信服的结果, 先放在这, 等我以后填. [仔细查了一下资料,这里其实就是”管道和xargs的区别, 管道是实现: 将前面的标准输出作为后面的标准输入. xargs是实现: 将标准输入作为命令的参数”. 详细见这篇文章.]
  • wc -l : 打印指定文件的文本行数。l是小写的L.

结果图如下所示, 还是挺人性化的, 每个文件有多少行都很清楚.

其实, 我最想说的是, 我一直以为这个项目代码量有十万行了呢, 要不然怎么会那么难管理. 结果还不到一万五. 额,这让我对大代码管理的难度有了更大体会.

更让我惊讶的是, 还有个github项目CLOC, Count Lines of Code. 真是醉了醉了, 果然是懒人改变世界. 这下只用一个命令就可以了.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏海纳周报

多线程内幕

本文是HinusWeekly第三期的第二篇文章,第三期的主题就是多线程编程。本文试图从单核CPU的角度讨论并发编程的困难。 函数调用的过程,就是不断地创建栈帧,...

36680
来自专栏尚国

深入剖析最新IE0day漏洞

在2018年4月下旬,我们使用沙箱发现了IE0day漏洞;自从在野外发现上一个样本(CVE-2016-0189)已经有两年多了。从许多方面来看,这个特别的漏洞及...

15720
来自专栏java学习

Java基础第一天学习笔记

01.01_计算机基础知识(计算机概述)(了解) * A:什么是计算机?计算机在生活中的应用举例 * 计算机(Computer)全称:电子计算机,俗称电脑。是...

37650
来自专栏debugeeker的专栏

《coredump问题原理探究》Linux x86版4.1节函数的逆向之序言

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

13120
来自专栏QQ会员技术团队的专栏

经验之道:最有效的 iOS 内存泄漏检测

通过过去参与过的复杂大型的iOS项目开发经验,开发新的模块的时候,总结出了一套完整的iOS内存自测的方法,通过Instruments来逐步跟踪检测我们创建和主动...

7.1K00
来自专栏知晓程序

教你为小程序起个好名字 | 小程序问答 #33

在上一期的问答中,知晓程序告诉了大家如何注册小程序,在完成注册之后,我们就要为新的小程序设定名称。

12200
来自专栏小尘哥的专栏

小程序(1)-入坑

老板想要一个小程序的东西,作为实诚却又没干过小程序开发的程序猿,二话不说,撸起袖子,开整。

16550
来自专栏服务端技术杂谈

如何在2016年成为一个更好的Node.js开发者

本文主要讨论一些进行Node.js开发的最佳实践和建议,这些建议不仅仅适合开发者,还适合那些管理与维护Node.js基础架构的工作人员。遵循本文提供的这些建议,...

31670
来自专栏Java技术分享圈

杨老师课堂_Java教程第一篇之认识计算机

*接下来就是确定、确定、确定就ok! *检验环境变量是否成功在DOS命令行里输入javac或java,如果正常显示一些内容,说明安装成功并且配...

11420
来自专栏互联网杂技

前端面试题整理

交互设计前端开发 前言: 现在前端面试主要考察以下几个方面: 初级的:html、css、js,jquery,开发工具git的使用,对其他框架稍微了解; 中级的:...

49390

扫码关注云+社区

领取腾讯云代金券