您的位置:首页 > 编程语言

如何统计代码行数

2014-08-02 09:28 253 查看

如何统计代码行数

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
命令就不符合要求

 

 

转载请注明作者:Focustc,博客地址为http://blog.csdn.net/caozhk,原文链接为点击打开

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell find 统计 xargs 管道