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.