Tôi đang tham gia một khóa học giới thiệu cho UNIX và có một câu hỏi bài tập về nhà mà sau:Làm cách nào để đếm tất cả các tệp có thể đọc được của con người trong Bash?
Có bao nhiêu tập tin trong câu hỏi trước là các tập tin văn bản? Tệp văn bản là bất kỳ tệp nào chứa nội dung có thể đọc được. (TRICK CÂU HỎI. Chạy lệnh tệp trên tệp để xem tệp đó là tệp văn bản hay tệp dữ liệu nhị phân! Nếu bạn chỉ cần đếm số lượng tệp có đuôi là
.txt
, bạn sẽ không nhận được điểm cho câu hỏi này.)
Câu hỏi trước chỉ đơn giản là hỏi có bao nhiêu tệp thông thường, có thể dễ dàng tìm ra bằng cách thực hiện find . -type f | wc -l
.
Tôi chỉ gặp khó khăn trong việc xác định nội dung "nội dung có thể đọc được của con người", vì tôi giả sử nó có nghĩa là bất kỳ thứ gì ngoài nhị phân/lắp ráp, nhưng tôi nghĩ đó là màn hình -type f
. Có lẽ đó là những gì giáo sư có nghĩa là bằng cách nói "câu hỏi lừa"?
Câu hỏi này có theo dõi sau đó cũng hỏi "Tệp văn bản nào chứa chuỗi" csc "trong bất kỳ kết hợp chữ hoa và chữ thường nào?". Rõ ràng "văn bản" đề cập đến nhiều hơn chỉ là các tệp .txt
, nhưng tôi cần tìm ra câu hỏi đầu tiên để xác định điều này!
Không, 'find-type f' loại trừ thư mục, nút thiết bị, v.v. ("spec tệp ial ") tức là đối tượng hệ thống tệp khác với tệp thuần túy. Nó không kiểm tra nội dung của các tập tin nào cả, chỉ là thông tin kiểu trong mục nhập thư mục (inode). Unix không tạo ra bất kỳ sự phân biệt nào giữa các tệp "nhị phân" và "văn bản" (và với đầu Unix này, bất kỳ nỗ lực nào để xác định sự phân biệt này đều đi vào một độ dốc trơn). – tripleee