Làm cách nào để tìm số lượng tệp trên hệ thống tệp?


26

Tôi muốn biết tôi có bao nhiêu tệp trên hệ thống tệp của mình. Tôi biết tôi có thể làm một cái gì đó như thế này:

find / -type f | wc -l

Điều này có vẻ không hiệu quả cao. Điều tôi thực sự muốn làm là tìm ra tổng số các nút duy nhất được coi là một 'tệp'.

Có cách nào tốt hơn?

Chú thích:

Tôi muốn làm điều này bởi vì tôi đang phát triển một chương trình đồng bộ hóa tệp và tôi muốn thực hiện một số phân tích thống kê (như có bao nhiêu tệp mà người dùng trung bình có tổng số so với số lượng tệp trên hệ thống). Tuy nhiên, tôi không cần biết bất cứ điều gì về các tệp đó, chỉ là chúng tồn tại (đường dẫn hoàn toàn không quan trọng). Tôi đặc biệt muốn biết thông tin này cho từng hệ thống tập tin được gắn kết (và đó là điểm gắn kết được liên kết).

Câu trả lời:


34

Tùy chọn --inodes dfsẽ cho bạn biết có bao nhiêu nút được dành riêng để sử dụng. Ví dụ:

$ df --inodes / /home
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            3981312  641704 3339608   17% /
/dev/sda8            30588928  332207 30256721    2% /home
$ sudo find / -xdev -print | wc -l
642070
$ sudo find /home -print | wc -l
332158
$ sudo find /home -type f -print | wc -l
284204

Lưu ý rằng số lượng mục được trả về từ findlớn hơn so IUsedvới hệ thống tập tin gốc (/), nhưng ít hơn cho / home. Nhưng cả hai đều trong vòng 0,0005%. Lý do cho sự khác biệt là vì các liên kết cứng và các tình huống tương tự.

Hãy nhớ rằng các thư mục, liên kết tượng trưng, ​​ổ cắm tên miền UNIX và các đường dẫn có tên đều là 'tệp' vì nó liên quan đến hệ thống tệp. Vì vậy, sử dụng find -type fcờ là không chính xác, từ quan điểm thống kê.


Tôi nghĩ rằng đây là những gì tôi đang tìm kiếm. Có cách nào để tìm ra có bao nhiêu loại tệp không? Ứng dụng này không cần trực tiếp bởi ứng dụng của tôi, nhưng có thể là kiến ​​thức hữu ích.
beatgammit

1
Không phải là không kiểm tra các nút của mỗi tệp trong hệ thống tệp, điều này sẽ giống như tìm kiếm.
Arcege

Df có hiểu hầu hết các hệ thống tập tin (ext2-4, ntfs, fat, reiserfs, v.v.) không?
beatgammit

Nó sẽ hiểu bất kỳ loại hệ thống tập tin có thể được gắn kết. Một số loại hệ thống tập tin không có inodes (ví dụ: chất béo); dfsẽ hiển thị tổng số nút là 0 trên các hệ thống tệp đó. Các loại khác sẽ hiển thị số liệu thống kê inode của hệ thống tập tin cơ bản.
Arcege

Bạn có phải chuyển hướng các lỗi để /dev/nullxem như bạn sẽ nhận được các dòng cảnh báo bạn rằng các tệp trong /proclà "ảo" không?
n0pe

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.