Jak policzyć całkowitą liczbę wierszy znalezionych plików?

10

Korzystam z, find . -name patternaby znaleźć jakieś pliki i chciałbym elegancko uzyskać całkowitą liczbę wierszy w tych plikach.

Jak mogę to osiągnąć?

GJ
źródło

Odpowiedzi:

9

Jeśli Twoja wersja wci findobsługuje niezbędne opcje:

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

co daje liczbę zliczeń na plik, jak również w sumie. Jeśli chcesz tylko całość:

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

Inną opcją dla wersji findtego wsparcia IT:

find . -name pattern -exec cat {} + | wc -l 
Wstrzymano do odwołania.
źródło
2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Pobiera każdy plik cat, a następnie przesyła wszystko przez wczestaw do trybu zliczania linii.

Lub, [nieprzetestowane] dziwne bezpieczne nazwy pliku:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
Majenko
źródło
1

Niestety wynik:

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

wstawia dodatkowe linie. Aby uzyskać wiarygodną liczbę linii, należy:

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

W ten sposób poprawnie obsługujesz spacje, uzyskujesz liczbę wierszy dla każdego pliku oraz całkowitą liczbę wierszy, szybciej i stylowo !!!

g24l
źródło
1
np .: znaleźć czas. -nazwa „ .m” -exec cat „{}” \; | wc -l działa w 4.878s i zwraca 227847 jako liczbę wierszy. Ale czas znajdź. -nazwa „ .m” -print0 | xargs -0 wc -l działa w ciągu 0,769 s i zwraca prawidłową liczbę wierszy 126464.
g24l
1

Kolejny łatwy sposób na znalezienie nie. linie w pliku:

wc -l filename

Przykład:

wc -l myfile.txt 
vkGunasekaran
źródło
-1

Nie przetestowano, ale co powiesz na:

cat `find . -name "searchterm" -print` | wc -l
Michael Schubert
źródło
Nie zadziała to dobrze ze ścieżkami zawierającymi spacje lub znaki, które powodują globowanie.
Kamil Maciorowski,
-2
wc -l `find -name filename`

będzie działać wydajnie.

Mahesh U
źródło
… Czy nie, jeśli ścieżki zawierają spacje lub znaki, które powodują globowanie.
Kamil Maciorowski,
I nawet jeśli działa, raportuje liczbę wierszy w każdym pliku, co nie jest eleganckim sposobem na uzyskanie sumy (zgodnie z żądaniem).
Scott,