Cách dễ nhất dường như là find /path/to/search -ls | wc -l
Tìm được sử dụng để đi bộ mặc dù tất cả các tập tin và thư mục.
-ls
để liệt kê (in) tất cả các tên. Đây là một mặc định và nếu bạn bỏ nó đi thì nó vẫn hoạt động giống như hầu hết các hệ thống. (Hầu như, vì một số có thể có mặc định khác nhau). Đó là một thói quen tốt để sử dụng rõ ràng mặc dù.
Nếu bạn chỉ sử dụng find /path/to/search -ls
phần đó, nó sẽ in tất cả các tệp và thư mục lên màn hình của bạn.
wc
là số từ. các -l
tùy chọn cho nó để đếm số dòng.
Bạn có thể sử dụng nó theo nhiều cách, vd
- kiểm tra wc
- mèo thử nghiệm | wc
Tùy chọn đầu tiên cho phép wc mở một tệp và đếm số dòng, từ và ký tự trong tệp đó. Tùy chọn thứ hai thực hiện tương tự nhưng không có tên tệp, nó đọc từ stdin.
Bạn có thể kết hợp các lệnh với một đường ống |
. Đầu ra từ lệnh đầu tiên sẽ được dẫn đến đầu vào của lệnh thứ hai. Do đó, find /path/to/search -ls | wc -l
sử dụng find để liệt kê tất cả các tập tin và thư mục và cung cấp đầu ra cho wc. Wc sau đó đếm số dòng.
(Một lựa chọn khác sẽ là 'ls | wc', nhưng find linh hoạt hơn nhiều và là một công cụ tốt để học.)
[Chỉnh sửa sau khi bình luận]
Nó có thể hữu ích để kết hợp tìm và thực hiện.
Ví dụ: find / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
sẽ liệt kê tất cả các thư mục trong /, thanh một số thư mục mà bạn không muốn tìm kiếm. Chúng ta có thể kích hoạt lệnh trước đó trên mỗi tệp, thu được tổng số tệp cho mỗi thư mục trong /.
Tuy nhiên:
- Điều này sử dụng phần mở rộng cụ thể của GNU -maxdepth.
Nó sẽ hoạt động trên Linux, nhưng không phải trên bất kỳ unix-a-alike nào.
- Tôi nghi ngờ bạn thực sự có thể muốn một số cho các tệp cho mỗi và mọi thư mục con.