Wie zähle ich die Gesamtzahl der Zeilen gefundener Dateien?

10

Ich führe a aus find . -name pattern, um einige Dateien zu finden, und ich möchte die Gesamtzahl der Zeilen in diesen Dateien elegant ermitteln.

Wie kann ich das erreichen?

GJ.
quelle

Antworten:

9

Wenn Ihre Version die erforderlichen Optionen unterstützt wcund findunterstützt:

find . -name pattern -print0 | wc -l --files0-from=-

Dies gibt Ihnen die Anzahl der Dateien sowie die Gesamtzahl. Wenn Sie nur die Summe wollen:

find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1

Eine weitere Option für Versionen find, die dies unterstützen:

find . -name pattern -exec cat {} + | wc -l 
Bis auf weiteres angehalten.
quelle
2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Nimmt jede Datei und cats es, leitet dann alles durch, wcum in den Zeilenzählmodus zu wechseln.

Oder [ungetesteter] seltsamer Dateiname sicher:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
Majenko
quelle
1

Leider ist die Ausgabe von:

find . -iname "yourpattern" -exec cat '{}' \; |wc -l

fügt zusätzliche Zeilen ein. Um eine zuverlässige Zeilenanzahl zu erhalten, sollten Sie Folgendes tun:

find . -name "yourpattern" -print0 | xargs -0 wc -l

Auf diese Weise können Sie Leerzeichen korrekt behandeln, eine Zeilenanzahl für jede Datei und die Gesamtzeilenanzahl schneller und stilvoller erhalten !!!

g24l
quelle
1
zB: Zeit finden. -name " .m" -exec cat '{}' \; | wc -l läuft in 4.878s und gibt 227847 als Zeilenanzahl zurück. Aber Zeit finden. -name " .m" -print0 | xargs -0 wc -l wird in 0,769s ausgeführt und gibt die richtige Zeilenanzahl 126464 zurück.
G24l
1

Ein weiterer einfacher Weg, um nein zu finden. Zeilen in einer Datei:

wc -l filename

Beispiel:

wc -l myfile.txt 
vkGunasekaran
quelle
-1

Ungetestet, aber wie wäre es mit so etwas wie:

cat `find . -name "searchterm" -print` | wc -l
Michael Schubert
quelle
Dies funktioniert nicht gut mit Pfaden, die Leerzeichen oder Zeichen enthalten, die das Globbing auslösen.
Kamil Maciorowski
-2
wc -l `find -name filename`

wird effizient arbeiten.

Mahesh U.
quelle
… Oder nicht, wenn Pfade Leerzeichen oder Zeichen enthalten, die das Globbing auslösen.
Kamil Maciorowski
Und selbst wenn es funktioniert, wird die Anzahl der Zeilen in jeder Datei angegeben, was keine elegante Methode ist, um die Gesamtsumme zu erhalten (wie angefordert).
Scott