学习了目录操作函数 编写了一个源…

这几天看Unix编程 学习了dirent.h这个头文件里面的一些目录读取函数 还有stat.h头文件里面的获取文件信息的函数 编写了Linux下面的ls命令 简化版的ls命令
      昨天 由于我的好奇心我下载了一个Linux内核(2.6.34.1)的源代码 看里面有一大堆源代码 好厉害..我就想看看他到底有多少行 没办法 只能自己编程计算 我就用所学的知识编写了一个统计源代码的程序 他可以统计一个目录树中所有指定扩展名的文件有多少行 共有多少个字符 并在文件中生成目录树 我还很蛋疼的加入了统计每个字符在目录中出现了多少个这种功能..(真tmd无聊..)
    算法就是通过递归遍历目录树然后读取文件 很sb的..本来想给目录按照名字排序 结果发现windows和linux下面对readdir这个函数的支持不一样 (感觉linux的目录信息结构体是本来就存在的 而windows的目录信息结构体是用API直接读取生成在静态空间里面的 因为文件系统不一样) 在linux下面不排序的话就是乱序 然后对文件名指针排序后就好了 然后在windows下面对指针排序后发现文件都是一样的名字...也就是说指针指向同一个空间.
  ....然后我就没加入蛋疼的排序功能 (其实在windows下面这个函数是自动生成从小到大的文件名的..真方便..更确定了他的目录结构体是临时生成在静态变量的)
    很蛋疼的扫描了下Linux 内核源码...有一千多万行代码 三亿多字符 吓了我一跳...

Charactor count in /media/e/linux/kernel/linux-2.6.34.1:

(Visible charactor)

    charactor '    (ASCII:  32) :36829877 (11.2174%)
    charactor ' ! '  (ASCII:  33) :  227529 (0.0692993%)
    charactor ' " '  (ASCII:  34) :  981736 (0.299011%)
    charactor ' # '  (ASCII:  35) : 1019531 (0.310522%)
    charactor ' $ '  (ASCII:  36) :      7067 (0.00215242%)
    charactor ' % '  (ASCII:  37) :  287997 (0.0877162%)
    charactor ' & '  (ASCII:  38) :  740808 (0.22563%)
    charactor ' ' '  (ASCII:  39) :  129483 (0.0394371%)
    charactor ' ( '  (ASCII:  40) : 3935105 (1.19853%)
    charactor ' ) '  (ASCII:  41) : 3937486 (1.19925%)
    charactor ' * '  (ASCII:  42) : 5294139 (1.61245%)
    charactor ' + '  (ASCII:  43) :  430409 (0.131091%)
    charactor ' , '  (ASCII:  44) : 4751289 (1.44712%)
    charactor ' - '  (ASCII:  45) : 3191487 (0.972042%)
    charactor ' . '  (ASCII:  46) : 1575165 (0.479753%)
    charactor ' / '  (ASCII:  47) : 2321300 (0.707006%)
    charactor ' 0 '  (ASCII:  48) : 6915779 (2.10636%)
    charactor ' 1 '  (ASCII:  49) : 2120732 (0.645918%)
    charactor ' 2 '  (ASCII:  50) : 1714803 (0.522283%)
    charactor ' 3 '  (ASCII:  51) : 1087947 (0.33136%)
    charactor ' 4 '  (ASCII:  52) :  986460 (0.300449%)
    charactor ' 5 '  (ASCII:  53) :  606067 (0.184592%)
    charactor ' 6 '  (ASCII:  54) :  808268 (0.246177%)
    charactor ' 7 '  (ASCII:  55) :  468726 (0.142761%)
    charactor ' 8 '  (ASCII:  56) :  901063 (0.27444%)
    charactor ' 9 '  (ASCII:  57) :  481907 (0.146776%)
    charactor ' : '  (ASCII:  58) :  533928 (0.16262%)
    charactor ' ; '  (ASCII:  59) : 3781891 (1.15186%)
    charactor ' < '  (ASCII:  60) :  532255 (0.162111%)
    charactor ' = '  (ASCII:  61) : 2504666 (0.762855%)
    charactor ' > '  (ASCII:  62) : 1980438 (0.603189%)
    charactor ' ? '  (ASCII:  63) :    50317 (0.0153252%)
    charactor ' @ '  (ASCII:  64) :    93794 (0.0285672%)
    charactor ' A '  (ASCII:  65) : 2650946 (0.807408%)
    charactor ' B '  (ASCII:  66) : 1075072 (0.327438%)
    charactor ' C '  (ASCII:  67) : 2480897 (0.755615%)
    charactor ' D '  (ASCII:  68) : 1966210 (0.598855%)
    charactor ' E '  (ASCII:  69) : 3211633 (0.978178%)
    charactor ' F '  (ASCII:  70) : 1381906 (0.420892%)
    charactor ' G '  (ASCII:  71) :  960919 (0.29267%)
    charactor ' H '  (ASCII:  72) :  683768 (0.208258%)
    charactor ' I '  (ASCII:  73) : 2626775 (0.800046%)
    charactor ' J '  (ASCII:  74) :    36313 (0.01106%)
    charactor ' K '  (ASCII:  75) :  447644 (0.13634%)
    charactor ' L '  (ASCII:  76) : 1727130 (0.526038%)
    charactor ' M '  (ASCII:  77) : 1720172 (0.523919%)
    charactor ' N '  (ASCII:  78) : 1937673 (0.590164%)
    charactor ' O '  (ASCII:  79) : 1814087 (0.552523%)
    charactor ' P '  (ASCII:  80) : 1867258 (0.568717%)
    charactor ' Q '  (ASCII:  81) :  181357 (0.0552365%)
    charactor ' R '  (ASCII:  82) : 2666262 (0.812072%)
    charactor ' S '  (ASCII:  83) : 2613991 (0.796152%)
    charactor ' T '  (ASCII:  84) : 2647271 (0.806288%)
    charactor ' U '  (ASCII:  85) : 1124368 (0.342453%)
    charactor ' V '  (ASCII:  86) :  600963 (0.183037%)
    charactor ' W '  (ASCII:  87) :  457188 (0.139247%)
    charactor ' X '  (ASCII:  88) :  586961 (0.178773%)
    charactor ' Y '  (ASCII:  89) :  367127 (0.111817%)
    charactor ' Z '  (ASCII:  90) :  121554 (0.0370221%)
    charactor ' [ '  (ASCII:  91) :  409347 (0.124676%)
    charactor ' \ '  (ASCII:  92) :  349838 (0.106551%)
    charactor ' ] '  (ASCII:  93) :  409188 (0.124628%)
    charactor ' ^ '  (ASCII:  94) :      9349 (0.00284746%)
    charactor ' _ '  (ASCII:  95) :13221908 (4.02704%)
    charactor ' ` '  (ASCII:  96) :      1844 (0.000561633%)
    charactor ' a '  (ASCII:  97) : 9570598 (2.91495%)
    charactor ' b '  (ASCII:  98) : 2978191 (0.907078%)
    charactor ' c '  (ASCII:  99) : 7846774 (2.38992%)
    charactor ' d '  (ASCII: 100) : 8108947 (2.46977%)
    charactor ' e '  (ASCII: 101) :18294431 (5.572%)
    charactor ' f '  (ASCII: 102) : 5390799 (1.64189%)
    charactor ' g '  (ASCII: 103) : 2898564 (0.882825%)
    charactor ' h '  (ASCII: 104) : 3359586 (1.02324%)
    charactor ' i '  (ASCII: 105) :12066998 (3.67529%)
    charactor ' j '  (ASCII: 106) :  147680 (0.0449794%)
    charactor ' k '  (ASCII: 107) : 1681804 (0.512233%)
    charactor ' l '  (ASCII: 108) : 5953164 (1.81318%)
    charactor ' m '  (ASCII: 109) : 4031803 (1.22798%)
    charactor ' n '  (ASCII: 110) :10077726 (3.06941%)
    charactor ' o '  (ASCII: 111) : 8338111 (2.53957%)
    charactor ' p '  (ASCII: 112) : 5128636 (1.56205%)
    charactor ' q '  (ASCII: 113) :  618905 (0.188502%)
    charactor ' r '  (ASCII: 114) :11416137 (3.47705%)
    charactor ' s '  (ASCII: 115) :10435561 (3.17839%)
    charactor ' t '  (ASCII: 116) :14491605 (4.41376%)
    charactor ' u '  (ASCII: 117) : 5920131 (1.80311%)
    charactor ' v '  (ASCII: 118) : 2730102 (0.831516%)
    charactor ' w '  (ASCII: 119) : 1501878 (0.457432%)
    charactor ' x '  (ASCII: 120) : 3498330 (1.0655%)
    charactor ' y '  (ASCII: 121) : 1392112 (0.424%)
    charactor ' z '  (ASCII: 122) :  377025 (0.114832%)
    charactor ' { '  (ASCII: 123) :  954629 (0.290755%)
    charactor ' | '  (ASCII: 124) :  312395 (0.0951472%)
    charactor ' } '  (ASCII: 125) :  954509 (0.290718%)
    charactor ' ~ '  (ASCII: 126) :    44073 (0.0134235%)

COUNT:

  Line: 11636893
  Characotor 328328111

TOTAL:

  File: 26285
  Folder 1982
-----------------------------------------------------------
这是他的统计 另外他还可以生成级联目录树 
 
find:  .c  .h  .cpp

  Folder Tree:

      [+]/media/e/linux/kernel/linux-2.6.34.1
              [+]arch
                      [+]alpha
                              [+]boot
                                      [|-]bootp.c                (size:5717,line: 217)
                                      [|-]bootpz.c                (size:13443,line: 480)
                                      [|-]main.c                (size:4397,line: 194)
                                      [|-]misc.c                (size:4505,line: 175)
                                      [+]tools
                                              [|-]mkbb.c                (size:3562,line: 153)
                                              [|-]objstrip.c                (size:6095,line: 282)
                              [+]include
                                      [+]asm
                                              [|-]8253pit.h                (size:  48,line:    4)
                                              [|-]a.out-core.h                (size:2444,line:  81)
                                              [|-]a.out.h                (size:2438,line: 103)
                                              [|-]agp.h                (size: 418,line:  19)
                                              [|-]agp_backend.h                (size: 909,line:  43)
                                              [|-]asm-offsets.h                (size:  35,line:    2)
                                              [|-]atomic.h                (size:6215,line: 262)
                                              [|-]auxvec.h                (size: 651,line:  25)
                                              [|-]barrier.h                (size: 751,line:  36)
                                              [|-]bitops.h                (size:9210,line: 469)
                                              [|-]bitsperlong.h                (size: 174,line:    9)
                                              [|-]bug.h                (size: 532,line:  25)
                                              [|-]bugs.h                (size: 294,line:  21)
                                              [|-]byteorder.h                (size: 131,line:    7)
                                              [|-]cache.h                (size: 542,line:  24)
                                              [|-]cacheflush.h                (size:2675,line:  76)
                                              [|-]checksum.h                (size:2023,line:  76)

这是很小的一部分....
          Source file manager  V1.0 

  usage: ./src_man myfolder
                ./src_man myfolder -find .c .h .cpp
                ./src_man myfolder -notree -count -find .c .h .cpp
                ./src_man myfolder -count -find .c .h .cpp
这些参数.....

后来 才发现 原来网上就有源码统计工具可以下载...真是郁闷......(不过我的也不错 可以生成目录树哦!!)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值