Làm cách nào để liệt kê số từ trong nhiều tệp?


9

Nói rằng tôi cần tìm hiểu có bao nhiêu từ trong mỗi tệp có từ 'hoạt động' trong đó.

Tôi biết rằng để tìm các tệp có 'công việc' trong đó, nó sẽ được ls work. Và để tìm ra số lượng từ đó sẽ làwc -w

Tuy nhiên tôi đã thử điều này và dường như chỉ hiển thị số lượng tệp chứ không phải số lượng từ được kết hợp trong tất cả các tệp (mà tôi cần):

ls work | wc -w

Vì vậy, giả sử nếu có 14 tệp tuân theo điều kiện tiên quyết 'công việc', nó sẽ hiển thị 14, không phải số lượng từ.

Câu trả lời:


17

Cú pháp là wc -w [FILE]. Nếu bạn không sử dụng TẬP_TIN nhưng đường ống trong đầu ra của ls worknó sẽ chỉ tính những gì nó sẽ đọc trên stdin.

Bạn cần đặt ống trong chính văn bản:

cat *work* | wc -w

Thay thế bạn có thể thực hiện wcvới find -exec. Nhưng hãy lưu ý rằng điều này có thể hiển thị nhiều khoản tiền "tổng" vì findsẽ gọi wcnhiều lần nếu có nhiều tệp.

find ./ -type f -name "*work*" -exec wc -w {} +

Tôi đã sử dụng findlệnh để cũng có thể tổng hợp số lượng dòng bằng cách sử dụng wc -l. Kinh ngạc!
cody.codes

3

Bạn có thể chạy wcvới nhiều tệp và sau đó sử dụng shell tích hợp *để thêm mọi tệp không bị ẩn trong thư mục làm việc vào wccác tham số.

wc -w *work*

Nếu tên của một thư mục chứa workthì điều này sẽ hiển thị đầu ra cùng với một lỗi..một hack sẽ là chuyển hướng STDERR 2>/dev/null.. mặc dù bạn nên sử dụng một cái gì đó như findđể chỉ nhận các tệp ..
heemayl
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.