Làm thế nào để đếm tổng số dòng của các tập tin được tìm thấy?


10

Tôi đang chạy find . -name patternđể tìm một số tệp và tôi muốn lấy tổng số dòng trong các tệp này một cách tao nhã.

Làm thế nào tôi có thể đạt được điều đó?

Câu trả lời:


9

Nếu phiên bản của bạn wcfindhỗ trợ các tùy chọn cần thiết:

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

sẽ cung cấp cho bạn số lượng mỗi tệp cũng như tổng số. Nếu bạn chỉ muốn tổng số:

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

Một tùy chọn khác cho các phiên bản findhỗ trợ nó:

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

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

Lấy từng tệp và cats nó, sau đó chuyển tất cả thông qua wccài đặt sang chế độ đếm dòng.

Hoặc, [chưa được kiểm tra] tên tệp lạ an toàn:

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

1

Thật không may, đầu ra của:

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

chèn thêm dòng. Để có được số lượng dòng đáng tin cậy, bạn nên làm:

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

Bằng cách này, bạn xử lý các khoảng trắng một cách chính xác, lấy số lượng dòng cho mỗi tệp và tổng số dòng, nhanh hơn và đúng kiểu !!!


1
vd: thời gian tìm. -name " .m" -exec mèo '{}' \; | wc -l chạy trong 4.878 giây và trả về 227847 dưới dạng đếm dòng. Nhưng thời gian tìm thấy. -name " .m" -print0 | xargs -0 wc -l chạy trong 0,769 giây và trả về số dòng thích hợp 126464.
g24l

1

Một cách dễ dàng khác để tìm không. dòng trong một tập tin:

wc -l filename

Thí dụ:

wc -l myfile.txt 

-1

Chưa được kiểm tra, nhưng làm thế nào về một cái gì đó như:

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

Điều này sẽ không hoạt động tốt với các đường dẫn chứa khoảng trắng hoặc ký tự kích hoạt toàn cầu.
Kamil Maciorowski

-2
wc -l `find -name filename`

sẽ làm việc hiệu quả.


Có hay không, nếu đường dẫn chứa khoảng trắng hoặc ký tự kích hoạt toàn cầu.
Kamil Maciorowski

Và ngay cả khi nó hoạt động, điều này báo cáo số lượng dòng trong mỗi tệp, đây không phải là một cách thanh lịch để có được tổng số (theo yêu cầu).
Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.