Làm thế nào tôi có thể tính kích thước của một thư mục?


181

Làm thế nào để biết kích thước của một thư mục? Bao gồm các thư mục con và tập tin.

Câu trả lời:


230
du -s directory_name

Hoặc để có được đầu ra có thể đọc được của con người:

du -sh directory_name

Các -stùy chọn có nghĩa là nó sẽ không liệt kê kích thước cho mỗi thư mục con, chỉ có tổng kích thước.


7
Trên thực tế du, đơn vị mặc định là các khối 512 byte theo POSIX và kilobyte trên Linux (trừ khi biến môi trường POSIXLY_CORRECTđược đặt) hoặc với du -k.
Gilles

3
@Gilles: Bắt tốt. Tôi đã xóa bit "số byte" khỏi câu trả lời của mình.
sepp2k

1
làm việc theo quy định
skidadon

1
nếu thư mục rất lớn và có nhiều thư mục con, sẽ mất rất nhiều thời gian ... gần 1 phút .. điều đó có bình thường không? Có cách nào để có được kích thước nhanh hơn?
yeahman

2
Tôi cần phải tính toán kích thước của "túi" thư mục của tôi, du -sh baghoạt động hoàn hảo!
António Almeida

7

Mặc dù sử dụng một gói riêng như ncdu có thể hoạt động tốt, nhưng việc so sánh nhiều thư mục có thể được thực hiện ở một mức độ nào đó bằng cách chỉ đưa ra một danh sách các thư mục để tăng kích thước. Ví dụ: để so sánh các thư mục cấp cao nhất trên hệ thống của bạn ...

cd /    
sudo du -sh ./*

2
Đơn giản hơn,du -sh /*
roaima


1
du -csh

-c sản xuất tổng cộng


1
Các -ckhông có ý nghĩa để sử dụng cùng với -s, phải không? -schỉ hiển thị kích thước của thư mục được chỉ định, đó là tổng kích thước của thư mục.
Andreas Storvik Strauman

1

Thử

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

Điều này giúp tìm các thư mục lớn để sau đó chọn lọc thông qua du -sh ./*


0

bạn cũng có thể sử dụng ls -ldh:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l là cho danh sách dài; -d là để hiển thị thông tin thư mục, không phải nội dung của thư mục, -h là để hiển thị kích thước ở định dạng huma có thể đọc được.


4
Điều này không chính xác, người hỏi rõ ràng đang tìm dấu chân của một thư mục và nội dung của nó trên đĩa. Câu trả lời của @ sepp2k là chính xác.
blong

1
Lệnh ls -ldh chỉ hiển thị kích thước cấu trúc inode của một thư mục. Số liệu là sự phản ánh kích thước của bảng chỉ mục của tên tệp, nhưng không phải là kích thước thực tế của nội dung tệp trong thư mục.
linbianxiaocao

0

Tôi luôn cài đặt gói "ncdu" và xem tất cả đầu ra của tất cả các thư mục có biểu diễn đồ họa. Điều này là do tôi thường cần biết những gì chiếm nhiều dung lượng đĩa nhất trên máy của tôi, bất kể một thư mục tổng hợp bao nhiêu.

Cách sử dụng: sudo ncdu /(Bạn không cần sudocho các thư mục mà bạn có quyền đọc).

Sẽ mất một lúc để quét số liệu thống kê sử dụng đĩa trên toàn bộ hệ thống tệp. Nó có một biểu diễn đồ họa dòng lệnh đẹp và bao gồm điều hướng bàn phím bằng các phím mũi tên, như đi sâu hơn hoặc cao hơn trong đường dẫn được quét. Bạn cũng có thể xóa các mục bằng cách nhấn D.



0

du -hd1

sẽ liệt kê ở định dạng có thể đọc được kích thước của tất cả các thư mục, ví dụ:

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config

0

Tôi đã thử với lệnh dưới đây vì câu trả lời tốt nhất đã được cung cấp

sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

đầu ra

 sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
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.