Frage Wie werden alle Codezeilen in einem Verzeichnis rekursiv gezählt?


Wir haben eine PHP-Anwendung und möchten alle Codezeilen unter einem bestimmten Verzeichnis und seinen Unterverzeichnissen zählen. Wir müssen Kommentare nicht ignorieren, da wir nur versuchen, eine ungefähre Vorstellung zu bekommen.

wc -l *.php 

Dieser Befehl funktioniert in einem bestimmten Verzeichnis sehr gut, ignoriert jedoch Unterverzeichnisse. Ich dachte, das könnte funktionieren, aber es gibt 74 zurück, was definitiv nicht der Fall ist ...

find . -name '*.php' | wc -l

Wie lautet die korrekte Syntax zum Eingeben aller Dateien?


1257
2017-08-31 17:42


Ursprung


Antworten:


Versuchen:

find . -name '*.php' | xargs wc -l

Das SLOCCount-Tool kann auch helfen.

Es wird eine genaue Quelle von Code-Anzahl für was auch immer geben Hierarchie, auf die Sie es richten, sowie einige zusätzliche Statistiken.


2149
2017-08-31 17:50



Für einen anderen Einliner:

( find ./ -name '*.php' -print0 | xargs -0 cat ) | wc -l

arbeitet an Namen mit Leerzeichen, gibt nur eine Zahl aus.


393
2017-08-31 20:26



Wenn Sie eine anständige neue Version von Bash (oder ZSH) verwenden, ist es viel einfacher:

wc -l **/*.php

In der Bash-Shell erfordert dies die globstar Option eingestellt werden, sonst die ** glob-operator ist nicht rekursiv. Setzen Sie das Problem um, um diese Einstellung zu aktivieren

shopt -s globstar

Um dies dauerhaft zu machen, fügen Sie es zu einer der Initialisierungsdateien hinzu (~/.bashrc, ~/.bash_profile etc.).


349
2018-02-04 15:11



Du kannst den ... benutzen cloc Dienstprogramm, das für diesen genauen Zweck gebaut wird. Es zeigt die Anzahl der Zeilen in jeder Sprache an, zusammen mit der Anzahl der Kommentare usw.

Verwendungs- und Ausgabebeispiel:

$ cloc --exclude-lang=DTD,Lua,make,Python .
    2570 text files.
    2200 unique files.                                          
    8654 files ignored.

http://cloc.sourceforge.net v 1.53  T=8.0 s (202.4 files/s, 99198.6 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Javascript                    1506          77848         212000         366495
CSS                             56           9671          20147          87695
HTML                            51           1409            151           7480
XML                              6           3088           1383           6222
-------------------------------------------------------------------------------
SUM:                          1619          92016         233681         467892
-------------------------------------------------------------------------------

214
2018-02-25 18:29



Auf UNIX-ähnlichen Systemen gibt es ein Tool namens cloc welches Code-Statistiken zur Verfügung stellt.

Ich bin in ein zufälliges Verzeichnis in unserer Code-Basis hineingelaufen, das sagt:

      59 text files.
      56 unique files.                              
       5 files ignored.

http://cloc.sourceforge.net v 1.53  T=0.5 s (108.0 files/s, 50180.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               36           3060           1431          16359
C/C++ Header                    16            689            393           3032
make                             1             17              9             54
Teamcenter def                   1             10              0             36
-------------------------------------------------------------------------------
SUM:                            54           3776           1833          19481
-------------------------------------------------------------------------------

87
2018-05-16 16:03



Sie haben nicht angegeben, wie viele Dateien vorhanden sind oder was die gewünschte Ausgabe ist. Suchst du danach:

find . -name '*.php' | xargs wc -l

29
2017-08-31 17:48



Noch eine Variante :)

$ find -name '*.php' | xargs cat | wc -l

Edit: Dies ergibt die Gesamtsumme anstelle von Datei für Datei.


20
2017-08-01 12:01



Es gibt ein kleines Tool namens Strafzettel um die Codezeilen im Verzeichnis zu zählen. Es sollte beachtet werden, dass es mehr als Sie wollen, da es leere Zeilen / Kommentare ignoriert, die Ergebnisse pro Programmiersprache gruppiert und einige Statistiken berechnet.


17
2017-08-31 17:52