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?

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 

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

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


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 

-1

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

cat `find . -name "searchterm" -print` | wc -l

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.


… 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.