Bagaimana cara menghitung jumlah total baris file yang ditemukan?

10

Saya sedang menjalankan find . -name patternuntuk menemukan beberapa file, dan saya ingin mendapatkan jumlah baris dalam file ini secara elegan.

Bagaimana saya bisa mencapainya?

GJ.
sumber

Jawaban:

9

Jika versi Anda wcdan findmendukung opsi yang diperlukan:

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

yang akan memberi Anda jumlah per file sekaligus total. Jika Anda hanya menginginkan totalnya:

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

Opsi lain untuk versi findyang mendukungnya:

find . -name pattern -exec cat {} + | wc -l 
Dijeda sampai pemberitahuan lebih lanjut.
sumber
2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Mengambil setiap file dan catkemudian, mem-pipe semua itu melalui wcset ke mode penghitungan baris.

Atau, nama file aneh [belum diuji] aman:

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

Sayangnya hasil dari:

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

menyisipkan garis ekstra. Untuk mendapatkan penghitungan garis yang andal, Anda harus melakukan:

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

Dengan cara ini Anda menangani spasi dengan benar, dapatkan jumlah baris untuk setiap file, dan jumlah total baris, lebih cepat dan bergaya !!!

g24l
sumber
1
mis: menemukan waktu. -nama " .m" -exec cat '{}' \; | wc -l beroperasi pada 4.878s dan mengembalikan 227847 sebagai jumlah baris. Tetapi waktu menemukan. -nama " .m" -print0 | xargs -0 wc -l berjalan pada 0,769s dan mengembalikan jumlah garis yang tepat 126464.
g24l
1

Cara mudah lain untuk menemukan tidak. baris dalam file:

wc -l filename

Contoh:

wc -l myfile.txt 
vkGunasekaran
sumber
-1

Belum diuji, tetapi bagaimana dengan sesuatu seperti:

cat `find . -name "searchterm" -print` | wc -l
Michael Schubert
sumber
Ini tidak akan bekerja dengan baik dengan jalur yang berisi spasi atau karakter yang memicu globbing.
Kamil Maciorowski
-2
wc -l `find -name filename`

akan bekerja secara efisien.

Mahesh U
sumber
... atau tidak, jika jalur berisi spasi atau karakter yang memicu globbing.
Kamil Maciorowski
Dan bahkan jika itu berhasil, ini melaporkan jumlah baris di setiap file, yang bukan cara yang elegan untuk mendapatkan total (seperti yang diminta).
Scott