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.