当前位置:   article > 正文

Linux统计代码行数_linux 统计代码行数

linux 统计代码行数

在日常运维工作中,会碰到对一项项目下的代码行数进行统计的需求,下面对代码行数的统计方法进行梳理,以供参考。
1)最简单的是使用wc -l直接进行代码行数统计。(wc的几个参数的解释:-c 统计字节数;-l 统计行数;-w统计字数)

1)统计当前目录下的index.php文件的行数
[root@huanqiu_web1 ~]# cat index.php |wc -l
17

2)统计web目录下,js文件数量:
[root@huanqiu_web1 ~]# find web/ -name "*.js" |wc -l

3)统计web目录下所有js文件代码行数:
[root@huanqiu_web1 ~]# find web/ -name "*.js" |xargs cat|wc -l 或 wc -l `find web/ -name "*.js"`|tail -n1

4)统计web目录下所有js文件代码行数,过滤了空行:
[root@huanqiu_web1 ~]# find web/ -name "*.js" |xargs cat|grep -v ^$|wc -l

5)统计web目录下所有js文件代码行数。过滤注释行
[root@huanqiu_web1 ~]# find web/ -name "*.js" |xargs cat|grep -v -e ^$ -e ^\s*\/\/.*$|wc -l
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2)使用find命令统计当前目录下php脚本文件的行数

[root@huanqiu_web1 main]# find . -name '*.php' | xargs wc -l
  • 1

3)参考一个line-counter的工具
获取这个工具

[root@huanqiu_web1 main]# pip install line-counter
  • 1

使用”line”命令可以获取当前目录下的文件与行数统计,效果如下:

[root@huanqiu_web1 main]# line
Search in /home/www/vote/
file count: 16207
line count: 3785977
  • 1
  • 2
  • 3
  • 4

如果想看到更细节一些的信息,使用”line -d”命令

[root@huanqiu_web1 main]# line -d
Search in /home/www/main/
31cms/Lib/Action/BackAction.class.php 37
31cms/Lib/Action/BaseAction.class.php 293
31cms/Lib/Action/Home/AdmaAction.class.php 18
31cms/Lib/Action/Home/DataAction.class.php 99
.......
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4)使用color工具

CLOC -- Count Lines of Code
可能大家都知道用 `wc -l` 命令进行代码行数统计,但是它会将代码中的注释、空行所占用的文本行都统计在内。如果想查看一个 tar 包或一个项目目录中“实际”的代码行数并且不愿意自己去写一个脚本来做此类工作,那么可以考虑使用 cloc。
cloc 是一个 perl 脚本,它可以统计很多种编程语言的代码文件中的空行、注释以及实际的代 码行数。

下载最新版的color
下载地址:https://fossies.org/linux/privat/cloc-1.64.tar.gz/cloc-1.64/cloc
百度云盘下载地址:https://pan.baidu.com/s/1o7B1vyq

安装cloc (mac环境下直接使用brew install cloc安装)
[root@huanqiu_web1 ~]# wget https://fossies.org/linux/privat/cloc-1.72.tar.gz
[root@huanqiu_web1 ~]# tar -zvxf cloc-1.72.tar.gz
[root@huanqiu_web1 ~]# cd cloc-1.72/
[root@huanqiu_web1 cloc-1.72]# make install
[root@huanqiu_web1 cloc-1.72]# ls
cloc  LICENSE  README.md  sqlite_formatter  tests  Unix

然后就可以直接使用cloc命令统计代码行数了。
比如统计/home/www/main下的代码行数
[root@huanqiu_web1 cloc-1.72]# ./cloc /home/www/main
    8098 text files.
    3770 unique files.                                         
Complex regular subexpression recursion limit (32766) exceeded at ./cloc line 9262.
Complex regular subexpression recursion limit (32766) exceeded at ./cloc line 9262.
Complex regular subexpression recursion limit (32766) exceeded at ./cloc line 9262.
    4671 files ignored.

github.com/AlDanial/cloc v 1.72  T=39.32 s (89.5 files/s, 23469.5 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
PHP                           2320          51059         127551         378887
JavaScript                     520          23226          23625         156244
CSS                            429          15131           3098         113634
HTML                           131           2023            415          14150
SQL                             71            326            392           9853
Stylus                           1            254              6            931
.........
JSON                             1              0              0             25
make                             2              3              0             15
INI                              2             18             64             13
Pascal                           1              6            119              2
-------------------------------------------------------------------------------
SUM:                          3519          92201         155315         675403
-------------------------------------------------------------------------------

统计压缩包代码行数。比如统计/usr/local/src下的mysql-5.6.34.tar.gz压缩包的代码行数
[root@huanqiu_web1 cloc-1.72]# ./cloc /usr/local/src/mysql-5.6.34.tar.gz
   14680 text files.
   13866 unique files.                                         
   10255 files ignored.

github.com/AlDanial/cloc v 1.72  T=86.00 s (51.5 files/s, 29614.3 lines/s)
---------------------------------------------------------------------------------------
Language                             files          blank        comment           code
---------------------------------------------------------------------------------------
C++                                   1161         188519         214211         944511
C                                      517          36553          40459         458406
C/C++ Header                          1389          51498         114913         206832
Java                                   612          13120          19048          54595
Pascal                                 103           8820          13805          43968
Perl                                   141           9513           6423          31054
Bourne Shell                           142           4970           5671          27393
...........
lex                                      3            219            102            524
dtrace                                   9             96             10            456
Prolog                                   1              9             40            447
Windows Message File                     2              4             17             12
Visual Basic                             1              0              0             12
---------------------------------------------------------------------------------------
SUM:                                  4433         318404         422680        1805749
---------------------------------------------------------------------------------------

对比压缩包代码差异。
[root@huanqiu_web1 cloc-1.72]# ./cloc --diff /usr/local/src/keepalived-1.3.5.tar.gz /usr/local/src/mysql-5.6.34.tar.gz
[root@LVS_Backup cloc-1.72]# ./cloc --diff /usr/local/src/keepalived-1.3.5.tar.gz /usr/local/src/mysql-5.6.34.tar.gz
     257 text files.
   14680 text files.
    9565 files ignored.                                        

github.com/AlDanial/cloc v 1.72  T=84.00 s (0.0 files/s, 0.0 lines/s)
---------------------------------------------------------------------------------------
Language                             files          blank        comment           code
---------------------------------------------------------------------------------------
CSS
 same                                    0              0              0              0
 modified                                0              0              0              0
 added                                   0              0              0              0
 removed                                 1             37              0            141
m4
........
---------------------------------------------------------------------------------------
SUM:
 same                                    0              0              1              1
 modified                                1              0             30             36
 added                                4432         318390         422649        1805712
 removed                               170           7865           8579          47591
---------------------------------------------------------------------------------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97

可以使用awk直接对一个文件内的数字进行求和

[root@huanqiu ~]# cat a.txt
123
1233
44
55
66
77
88
99
[root@huanqiu ~]# awk 'BEGIN{sum=0}{sum+=$0}END{print sum;}' a.txt
1785
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

shell下多个数求和的几种写法:

1)
[root@huanqiu ~]# cat sum.sh
#!/bin/bash 
a=5 
b=10
c=50
d=100
f=$[ $a+$b+$c+$d ] 
echo ${f} 
[root@huanqiu ~]# chmod 755 sum.sh
[root@huanqiu ~]# sh sum.sh
165

2)
[root@huanqiu ~]# cat sum.sh
#!/bin/bash 
a=5 
b=10
c=50
d=100  
let "f=a+b+c+d" 
echo ${f} 
[root@huanqiu ~]# sh sum.sh
165

3)
[root@huanqiu ~]# cat sum.sh
#!/bin/bash 
a=5 
b=10
c=50
d=100  
((f=a+b+c+d)) 
echo ${f} 
[root@huanqiu ~]# sh sum.sh
165
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/578346
推荐阅读
相关标签
  

闽ICP备14008679号