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?

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 

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

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


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 

-1

Belum diuji, tetapi bagaimana dengan sesuatu seperti:

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

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.


... 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.