一行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.
结果图如下所示, 还是挺人性化的, 每个文件有多少行都很清楚.
一行Shell代码查找所有代码行数
其实, 我最想说的是, 我一直以为这个项目代码量有十万行了呢, 要不然怎么会那么难管理. 结果还不到一万五. 额,这让我对大代码管理的难度有了更大体会.

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

1. 全库网所有资源均来源于用户上传和网络,如有侵权请发送邮箱联系站长处理!
2. 如果你有好的资源或者原创教程,可以到审核区投稿发布,分享会有钻石奖励和额外收入!
3. 全库网所有的源码、教程等其它资源均源于用户上传发布,如有疑问,可直接联系发布作者处理
4. 如有链接无法下载、失效或广告,请联系全库网管理员核实处理!
5. 通过发布原创教学视频或优质源码资源可以免费获得全库网站内SVIP会员噢
6.全库网管理猿邮箱地址:admin@qkuser.com,我们会在收到您的邮件后三个工作日内完成处理!
7. 如遇到加密压缩包,默认解压密码为"qkuser.com",如遇到无法解压的请联系管理员!

全库网 » 一行Shell代码查找所有代码行数