Zählen Sie die Gesamtzahl der Zeilen in einem Projekt mit Ausnahme bestimmter Ordner oder Dateien
-
14-11-2019 - |
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?
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...