首页 > 代码库 > 如何统计代码行数
如何统计代码行数
如何统计代码行数
- linux下提供了很多实用工具,甚至在安卓上,都有移植的busybox包含这些工具。
- 根据KISS理念,这些工具的功能很单一。但这些工具组合起来,就可以很方面的统计代码量了。
统计代码行数
- 流程为:首先使用find命令找到所有后缀名符合规则的源代码文件,之后使用wc命令统计行数。文件数可能过多,为防止出错使用xargs命令分割参数列表,最后得到的结果可以使用sort排序
- 统计所有c源代码行数的命令:
find -name *.c | xargs wc -l |sort -r
。结果按照反序排列 find -name *.c | xargs wc -l |sort -k2
结果按照文件名排列- 如需统计c++代码,将
*.c
更改为*.cc
即可。如果c++使用cpp后缀名,改为*.cpp
用到的命令详解
find命令
- find命令递归搜索目录,若任一文件使表达式为真则放入结果
- 使用方法
find [path...] [expression]
- path指定需要寻找的目录范围,默认为当前目录
- expression通常为测试条件,返回true或false
-name pattern
文件名符合shell正则式-path pattern
文件路径名符合shell正则式-exec order {}
执行命令,若返回值为0则真- 例子:
find -name *.c
搜索后缀名为c的文件 - 例子:
find . -exec sleep {1}
每隔1s显示一个文件
wc命令
- wc为wordcount的缩写,用于统计文件
- 使用方法
wc [-lwc] filename
- l、w、c分别表示统计行数、单词数、字符数。默认为统计全部三者
- 例子:
wc -l file1 file2
统计两文件的行数
xargs命令
- xargs的功能是捕获管道中前一个命令的输出,建立分段参数表并执行另一个命令
- find命令如果产生的参数列太长,可以使用xargs命令每次只传递一部分参数,防止在部分系统上出现溢出错误
- xargs通常以空格或者换行符分割参数,
-0
选项可以保证参数列中含有空格、换行符等时分割正确 - 例子:
find /tmp -name core | xargs -0 /bin/rm -f
。把/tmp
文件夹下所有名称为core的文件传递给rm命令,强制删除。-0
选项可以保证正确处理文件名中含有换行或空格的情况。
sort命令
- sort用于对不同的文本进行排序,以行为单位
- 默认排序方式为升序,
-r
选项可以修改为降序排列 -n
选项按照字符表示的数字的值来排序,如1 2 10 20
没有开启此选项排序结果为1 10 2 20
-f
忽略大小写-t
设置列之间的分隔符,-k
指定按照第几列排序- 例子:
sort -n -f -k 2 test.txt
。将test.txt中的各行按照第二列排序,忽略大小写
重定向
- 行数统计结果可以存入文本文件中,命令行最后加上
> count.txt
即可 - 标准输入、输出、错误输出分别用0,1,2表示
- 输入重定向使用输入重定向运算符
<
,可以把文件中的内容作为程序的输入。例如测试代码时使用:./a.out < test.in
,test.in文件里面是程序的测试输入 - 输出重定向可以将程序的输出写入到文件中,使用输出重定向运算符
>
。- 例子:
ls 1>/dev/null 2>/dev/null
不显示输出和错误输出。1、2与>之间不能有空格 - 例子:
ls 2> &1> t.txt
将错误输出重定向到标准输出,而此时标准输出还未重定向,因此标准输出内容将写入t.txt,而错误输出仍留在屏幕上 - 例子:
ls 1> t.txt 2> &1
将标准输出和错误输出都写入t.txt
- 例子:
管道
- 管道使用
|
表示 - 功能为前一个命令的标准输出定向为第二个命令的标准输入
- 第二个命令必须能从标准输入中读取才行,如
ls
命令就不符合要求
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。