Zählen Sie die Gesamtzahl der Zeilen in einem Projekt mit Ausnahme bestimmter Ordner oder Dateien

StackOverflow https://stackoverflow.com/questions/6016608

Frage

Mit dem Befehl:

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

Sie können die Gesamtzahl der Zeilen aller Dateien in einem Ordner ermitteln.

Aber stellen Sie sich vor, Sie haben einige Ordner (z. B. Bibliotheken), deren Zeilen Sie nicht zählen möchten, weil Sie sie nicht geschrieben haben.

Wie würden Sie also die Zeilen in einem Projekt zählen, mit Ausnahme bestimmter Ordner?

War es hilfreich?

Lösung

Mit find, können Sie Matching-Bedingungen auch mit „negieren“. !.Zum Beispiel, wenn ich alle auflisten möchte .java Dateien in einem Verzeichnis, mit Ausnahme derjenigen, die Folgendes enthalten Test:

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

Hoffe das hilft!

Bearbeiten:

Übrigens, die -name Prädikat filtert nur Dateinamen.Wenn Sie Pfade filtern möchten (damit Sie Verzeichnisse filtern können), verwenden Sie -path:

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

Andere Tipps

cloc has always been a great friend whenever I need to count lines of src-code. Using 2.6.29 linux kernel as an example:

$ 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
--------------------------------------------------------------------------------

you could always exclude them by listing out the files using regular expressions, for example,

*.txt will include only txt files and so on...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top