专栏首页along的开发之旅一行Shell代码查找所有代码行数

一行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 条评论
登录 后参与评论

相关文章

  • xargs的使用

    前段时间查自己的代码行数时, 用了”find . -name “*.cs” | xargs wc -l“, 但是对xargs在这里的作用有点不了解, 因为网上资...

    望天
  • ndkCompile ndk-build CMakeList 区别.

    一直很好奇`android.useDeprecatedNdk = true`到底是使用的什么废弃ndk, 但是找资料一直没有找到相关的.

    望天
  • Siemens NX 9.0和 UG 4.0 同时安装

    主要是解决能还是不能的问题,答案是确定的,能。Siemens NX 9.0的licence Server可以管理UG 4.0的licence。

    望天
  • 跟我学Kafka之zookeeper的存储结构

    当我们kafka启动运行以后,就会在zookeeper上初始化kafka相关数据,主要包括六大类:

    小程故事多
  • WORDPRESS专用主机推荐 自带CDN+SSL性价比高才是王道

    对于很多Wordpress爱好者来讲,一台合适的高性价比的WP专用主机才是一个完美的开始。接下来,就直接进入本文的主题吧。让我们来看看国外五大Wordpress...

    梦想家路飞
  • Spring中的拦截器与动态代理

    如果用专业术语来解:为其他对象提供一种代理以控制对这个对象的访问。如果投影在生活中,它可以理解成中介 黄牛 经纪人等…

    用户5224393
  • ASP.NET MVC 6路由技术

    在我们跳转到自定义路由之前,我们必须先了解下MVC6基于MVC5的基本变化。 ASP.NET MVC6将所有必要的启动服务,定义和配置的应用程序依赖关系放在一个...

    Techeek
  • Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865

    zhangrelay
  • sql数据库打包部署安装

    目的:在客户端服务器上”附加数据库文件”。 一).创建部署项目 1. 打开VS.NET2005。 2.在“文件”菜单上指向“新建项目”。 3. 在“新建项目”对...

    阿新
  • (图文双解)eclipse导项目时出现:Some projects cannot be imported because they already exist in the workspace

    eclipse工作空间 \.metadata\.plugins\ org.eclipse.core. resources\.projects 文件夹,删除同名...

    时间静止不是简史

扫码关注云+社区

领取腾讯云代金券