Để liệt kê các tệp ở bất cứ đâu bên dưới /tmp
, được sắp xếp theo kích thước:
find /tmp -type f -exec du -k {} + | sort -k1n -k2
Để liệt kê các tập tin và cây thư mục ngay bên dưới /tmp
, được sắp xếp theo kích thước:
du -k /tmp/..?* /tmp/.[!.]* /tmp* 2>/dev/null | sort -k1n -k2
Để liệt kê tất cả các tệp và cây thư mục ở bất cứ đâu bên dưới /tmp
, được sắp xếp theo kích thước:
du -ak /tmp | sort -k1n -k2
(Một ví dụ để minh họa sự khác biệt giữa ba lệnh: nếu có tệp /tmp/dir/file
, danh sách lệnh đầu tiên /tmp/dir/file
, danh sách thứ hai /tmp/dir
và danh sách thứ ba cả hai.)
Tất cả các lệnh trên hiển thị kích thước tính bằng kilobyte. Trong khi GNU du có thể xuất ra các kích thước có thể đọc được của con người (với các số nhân k, M, G, v.v.), thì việc sắp xếp chúng là một vấn đề khác. Các lõi GNU đủ gần đây (≥7.4) có thể làm điều đó: chỉ cần thay thế du -k
bằng du -h
và sort -k1n -k2
bằng sort -k1h -k2
. Mặt khác, đây là một kịch bản awk thô để chuyển đổi sang kích thước hậu tố (làm tròn xuống); chỉ cần sort
đầu ra ở trên vào nó.
awk -vFS='\t' -vOFS='\t' '{
if ($1) $1 = substr($1,1,(length($1)-1)%3+1)
substr("kMGTPEZY",(length($1)-1)/3+1,1);
print}'