计算项目中除特定文件夹或文件之外的总行数

时间:2011-05-16 11:20:02

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

使用命令:

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

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

但是想象一下你有一些文件夹(例如库),你不想计算它们的行,因为你没有写它们。

那么,你如何计算项目中排除某些文件夹的行?

3 个答案:

答案 0 :(得分:23)

每当我需要计算src代码行时,

cloc一直是一个很好的朋友。以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
--------------------------------------------------------------------------------

答案 1 :(得分:4)

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

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

希望这有帮助!

编辑:

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

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

答案 2 :(得分:0)

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

* .txt将仅包含txt文件,依此类推......