前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一行Shell代码查找所有代码行数

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

作者头像
望天
发布2018-08-02 11:37:31
1.1K0
发布2018-08-02 11:37:31
举报
文章被收录于专栏:along的开发之旅

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

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

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

代码语言:javascript
复制
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. 真是醉了醉了, 果然是懒人改变世界. 这下只用一个命令就可以了.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年03月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档