【问题标题】:Count total number of lines in a project excluding certain folders or files计算项目中不包括某些文件夹或文件的总行数
【发布时间】:2011-05-16 11:20:01
【问题描述】:

使用命令:

wc -l + `find . -name \* -print` 

您可以获取文件夹内所有文件的总行数。

但是假设您有一些文件夹(例如库),您不想计算它们的行数,因为它们不是您编写的。

那么,您将如何计算项目中不包括某些文件夹的行数?

【问题讨论】:

    标签: count language-agnostic lines-of-code


    【解决方案1】:

    cloc 一直是我需要计算 src 代码行数的好朋友。以2.6.29 linux内核为例:

    $ cloc .
    
       26667 text files.
          26357 unique files.
              2782 files ignored.
    
    http://cloc.sourceforge.net v 1.50  T=168.0 s (140.9 files/s, 58995.0 lines/s)
    --------------------------------------------------------------------------------
    Language                      files          blank        comment           code
    --------------------------------------------------------------------------------
    C                             11435        1072207        1141803        5487594
    C/C++ Header                  10033         232559         368953        1256555
    Assembly                       1021          35605          41375         223098
    make                           1087           4802           5388          16542
    Perl                             25           1431           1648           7444
    yacc                              5            447            318           2962
    Bourne Shell                     50            464           1232           2922
    C++                               1            205             58           1496
    lex                               5            222            246           1399
    HTML                              2             58              0            378
    NAnt scripts                      1             85              0            299
    Python                            3             62             77            277
    Bourne Again Shell                4             55             22            265
    Lisp                              1             63              0            218
    ASP                               1             33              0            136
    awk                               2             14              7             98
    sed                               1              0              3             29
    XSLT                              1              0              1              7
    --------------------------------------------------------------------------------
    SUM:                          23678        1348312        1561131        7001719
    --------------------------------------------------------------------------------
    

    【讨论】:

      【解决方案2】:

      使用find,您还可以使用!“否定”匹配条件。例如,如果我想列出一个目录下的所有.java文件,不包括那些包含Test的文件:

      find . -name "*.java" ! -name "*Test*"

      希望这会有所帮助!

      编辑:

      顺便说一下,-name 谓词只过滤文件名。如果要过滤路径(以便过滤目录),请使用-path

      find . -path "*.java" ! -path "*Test*"

      【讨论】:

      • 如何排除多个文件夹?
      • @rclai,你可以像find . -name '*.java' ! -path '*folder1*' ! -path '*folder2*'这样附加额外的-path表达式
      【解决方案3】:

      您总是可以通过使用正则表达式列出文件来排除它们, 例如,

      *.txt 将仅包含 txt 文件等...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        • 2015-08-14
        • 1970-01-01
        • 2020-10-01
        相关资源
        最近更新 更多