Phiên bản BSD du
được sử dụng trong OS X báo cáo kích thước với các khối 512 byte - các kích thước về cơ bản được làm tròn đến giá trị 512 byte tiếp theo. Điều này cho bạn biết không gian trên đĩa, lớn hơn lượng dữ liệu. Nếu bạn có nhiều tệp nhỏ, sự khác biệt có thể lớn.
Đây là một ví dụ.
Đây là giá trị với thường xuyên du
. Đó là trong các khối 512 byte:
$ du -s
248 .
Các -h
kết quả cờ trong một số dễ đọc hơn, bằng kilobyte. Như mong đợi, nó chỉ bằng một nửa số khối 512 byte:
$ du -hs
124K .
Cuối cùng, bạn có thể sử dụng find
và awk
cung cấp cho bạn tổng số byte thực tế trong các tệp. Đây là loại chậm, nhưng nó hoạt động:
$ find . -type f -exec ls -l {} \; | awk '{sum += $5} END {print sum}'
60527
Giá trị này khớp chính xác với số được báo cáo bởi cửa sổ Nhận thông tin của Finder. (Không có dĩa hoặc xattrs lạ nào trong tập hợp tệp này.) Nó nhỏ hơn đáng kể so với giá trị được báo cáo du
.
Đây là cách nó hoạt động: nó nhận được một danh sách tất cả các tệp và chuyển chúng đến ls -l
; sau đó awk
được sử dụng để đếm các byte. Các -type f
lá cờ là có để chỉ file (và không phải thư mục) được gửi đến ls
. Không có cờ đó, nó cũng sẽ gửi tên thư mục tới ls
và mỗi tệp sẽ được liệt kê hai lần: một lần dưới dạng tệp riêng lẻ và một lần dưới dạng một mục trong thư mục.
Phiên bản GNU du
có thể đưa ra các giá trị theo byte thực tế thay vì các khối. Thật không may là phiên bản BSD du
không linh hoạt.
-k
tùy chọn để sử dụng kích thước khối 1K byte