2057 Stimmen

Wie kann ich alle Codezeilen in einem Verzeichnis rekursiv zählen?

Wir haben eine PHP-Anwendung und wollen alle Codezeilen in einem bestimmten Verzeichnis und seinen Unterverzeichnissen zählen.

Wir brauchen die Kommentare nicht zu ignorieren, da wir nur versuchen, uns einen groben Überblick zu verschaffen.

wc -l *.php 

Dieser Befehl funktioniert gut für ein bestimmtes Verzeichnis, aber er ignoriert Unterverzeichnisse. Ich dachte, der folgende Kommentar könnte funktionieren, aber er gibt 74 zurück, was definitiv nicht der Fall ist...

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

Wie lautet die korrekte Syntax, um alle Dateien eines Verzeichnisses resursiv einzugeben?

4voto

bharath Punkte 461

Wenn die Dateien zu zahlreich sind, ist es besser, nur nach der Gesamtzahl der Zeilen zu suchen.

find . -name '*.php' | xargs wc -l | grep -i ' total' | awk '{print $1}'

4voto

ghostdog74 Punkte 305138

Ganz einfach:

find /path -type f -name "*.php" | while read FILE
do
    count=$(wc -l < $FILE)
    echo "$FILE has $count lines"
done

2 Stimmen

Es schlägt fehl, wenn ein Leerzeichen oder ein Zeilenumbruch in einem der Dateinamen enthalten ist

3voto

Wenn Sie mit Linux arbeiten (und ich nehme an, das tun Sie), empfehle ich mein Tool mehrsprachig . Sie ist deutlich schneller als die sloccount o cloc und es ist funktionsreicher als sloccount .

Sie können es aufrufen mit

poly .

oder

poly

Es ist also viel benutzerfreundlicher als ein verschlungenes Bash-Skript.

3voto

Morgan Zhang Punkte 73

Sie brauchen nicht all diese komplizierten und schwer zu merkenden Befehle. Sie brauchen nur eine Python Werkzeug namens Linienzähler .

Ein kurzer Überblick

So erhalten Sie das Werkzeug

$ pip install line-counter

Verwenden Sie die line um die Anzahl der Dateien und Zeilen im aktuellen Verzeichnis (rekursiv) zu ermitteln:

$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839

Wenn Sie mehr Details wünschen, verwenden Sie einfach line -d .

$ line -d
Search in /Users/Morgan/Documents/Example/
Dir A/file C.c                                             72
Dir A/file D.py                                           268
file A.py                                                 467
file B.c                                                   32
file count: 4
line count: 839

Und das Beste an diesem Tool ist, dass Sie eine .gitignore -ähnliche Konfigurationsdatei an. Sie können Regeln aufstellen, um die zu zählenden Dateien auszuwählen oder zu ignorieren, genau wie in ".gitignore".

Weitere Beschreibung und Verwendung finden Sie hier: https://github.com/MorganZhang100/line-counter

3voto

Tschallacka Punkte 26239

Ich wollte mehrere Dateitypen überprüfen und war zu faul, die Summe von Hand zu berechnen. Deshalb verwende ich jetzt dieses Programm, um die Gesamtzahl in einem Rutsch zu ermitteln.

find . -name '*.js' -or -name '*.php' | xargs wc -l | grep 'total'  | awk '{ SUM += $1; print $1} END { print "Total text lines in PHP and JS",SUM }'

79351
15318
Textzeilen in PHP und JS insgesamt 94669

Auf diese Weise können Sie mehrere Arten von Durchwahlen, nach denen Sie filtern möchten, miteinander verknüpfen. Fügen Sie sie einfach in der -name '*.js' -or -name '*.php' Teil, und ändern Sie möglicherweise die otuput-Nachricht nach Ihren Wünschen.

1 Stimmen

Guter Hack mit awk und keine Notwendigkeit, zusätzliche Tools zu installieren, danke! Wenn Sie außerdem die Ordner überspringen und keine Dateierweiterungen angeben wollen (alle Dateien zählen), dann -type f wird hier helfen: find . -type f | xargs wc -l | grep 'total' | awk '{ SUM += $1; print $1} END { print "Total text lines: ",SUM }'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X