Bulunan dosyaların toplam satır sayısı nasıl hesaplanır?


10

find . -name patternBazı dosyaları bulmak için çalışıyorum ve zarifçe bu dosyalarda toplam satır sayısını almak istiyorum.

Bunu nasıl başarabilirim?

Yanıtlar:


9

Senin sürümü ise wcve findgerekli seçeneklerini destekler:

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

size toplamda dosya başına sayım verir. Yalnızca toplamı istiyorsanız:

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

findBunu destekleyen başka bir seçenek de bunu destekliyor:

find . -name pattern -exec cat {} + | wc -l 

2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Her dosyayı alıp catalır, sonra tüm wcbunları satır sayma moduna geçirir .

Veya [denenmemiş] garip dosya adı kasası:

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

1

Ne yazık ki çıktı:

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

fazladan satır ekler. Güvenilir bir hat sayısı elde etmek için yapmanız gerekenler:

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

Bu şekilde boşlukları doğru bir şekilde idare edersiniz, her dosya için bir satır sayısı ve daha hızlı ve şık bir şekilde toplam satır sayısı elde edersiniz !!!


1
örneğin: zaman bulma. -name " .m" -exec cat '{}' \; | wc -l 4.878s içinde çalışır ve satır sayısı olarak 227847 değerini döndürür. Ama zaman bulmak. -adı " .m" -print0 | xargs -0 wc -l 0.769s içinde çalışır ve 126464 numaralı doğru satır sayısını döndürür.
— g24l

1

Hayır bulmanın bir başka kolay yolu. dosyadaki satırlar:

wc -l filename

Misal:

wc -l myfile.txt 

-1

Test edilmedi, ancak aşağıdaki gibi bir şeye ne dersiniz:

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

Bu, globbing'i tetikleyen boşluklar veya karakterler içeren yollarla iyi çalışmaz.
— Kamil Maciorowski

-2
wc -l `find -name filename`

verimli çalışır.


… Ya da değil, yollar globbing'i tetikleyen boşluklar ya da karakterler içeriyorsa.
— Kamil Maciorowski

Çalışır bile, bu satır sayısını bildiriyor içinde her dosyanın, (istendiği gibi) toplam almak için zarif bir yol değildir.
— Scott
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.