进行软著申请的时候,相关负责人经常会来找开发提供文件数量和代码量信息,很多开发,尤其前端,不太清楚该如何快速计算这两个结果,我们这里来普及一下吧。
计算文件数和代码量,这种事情,其实接触过shell的人,就了解,并不是多么复杂的事情,只需要一条命令、几秒钟的计算时间,就搞定了。那么具体该怎么操作呢?
计算文件数
计算文件数通常使用的是ls
命令。
命令格式
命令参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| -d ## 显示当前目录的上层目录,不显示子目录 -a ## 显示当前目录下的所有子目录,包括隐藏的文件 -l ## 显示当前目录下所有文件的所有信息(除隐藏文件夹外)文件名 子目录的权限 使用者 文件大小 等 -s ## 在每个文件后面显示文件的大小(我觉得-s 表示的是size的意思) -k ## 树上说以k字节的形式表示文件的大小(我未曾直观的看到怎样以k 字节表示) -u ## 以文件上次访问的时间排序(我试出来的结果是倒序) -t ## 以时间排序(应该是以最近访问排序) -o ## 显示除组信息外的气其他详细信息 -x ## 按列输出横向排序 -r ## 对目录反向排序 -q ## 用“?”表示不可输出的字符(简单尝试为看出效果) -m ## 横向输入文件名,并且用“,”作为分隔符 -S ## 以文件大小排序(注意大写) -R ## 列出所有子目录下的文件 -pF ## 在文件后面附上一个字符说明文件的类型。“×”表示可执行文件,“/”表示目录,“@”表示符号链接,“|”表示FIFo(FIFO表示管道,),“=”表示套接字 -C ## 按列输出,纵向排序 -Q ## 把输出的文件名用双引号括起来
|
用ls命令计算当前文件夹下的文件数
计算文件数,这个描述看起来不复杂,但是细化一下,也会有很多不同的需求,我们举三个常见的细化需求:
不包含目录
1
| ls -l | grep "^-" | wc -l
|
包含子目录
1
| ls -lR| grep "^-" | wc -l
|
当前目录下文件夹的个数
1
| ls -lR | grep "^d" | wc -l
|
计算代码量
计算代码量,我们通常以代码行数为单位。计算代码量的方法有很多,我们这里用find
来实现。
命令格式
命令参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| -name ## 根据文件名查找 -perm ## 根据文件权限查找 -prune ## 该选项可以排除某些查找目录 -user ## 根据文件属主查找 -group ## 根据文件属组查找 -mtime-n|+n ## 根据文件更改时间查找
-nogroup ## 查找无有效属组的文件 -nouser ## 查找无有效属主的文件 -newer file1!file2 ## 查找更改时间比file1新但比file2|日IDE文件 -type ## 按文件类型查找 -size-n +n ## 按文件大小查找 -mindepth n ## 从n级子目录开始搜索 -maxdepth n ## 最多搜索到n级子目录
|
用find命令计算当前文件夹下的代码行数
简单介绍了find命令的使用,回归正题,如何用find命令计算指定文件夹下所有文件的代码行数呢?
基础版
1 2
| find . -name "*[.php|.css|.js]"|xargs wc -l|grep "total"|awk '{print $1}' find . -name "*[.php|.css|.js]"|xargs cat|wc -l
|
去空行版
1
| find . -name "*[.php|.css|.js]"|xargs cat|grep -v ^$|wc -l
|
上面的^$
是正则表达式,^
是以匹配开头,$
是匹配结尾,所以^$
是匹配一个空行。
去注释版
1
| find . -name "*[.php|.css|.js]"|xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l
|
上面的^\s*\/\/.*$
是正则表达式,其中^\s*
表明以空格(多个)开头,\/\/
表明是//
开头的注释,.*$
表明可能以.
结尾
去注释版只是去掉以//
开头的注释,对于以/* */
包含的注释并没有去掉。
本文永久链接: https://www.mulianju.com/count-files/