it-swarm-vi.com

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

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.

189
Juanjo Conti
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 -s tù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.

245
sepp2k

GNU du mất -b Lựa chọn.

Xem trang maninfo page để được trợ giúp thêm:

-b, --bytes tương đương với --apparent-size --block-size=1

7
user2573436

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 ./*
7
NFlourish
du -csh

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

1
Kalpesh Soni

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 để sàng lọc thông qua việc sử dụng du -sh ./*

1
rollinjack

Bạn có thể sử dụng "file-size.sh" từ awk Thư viện Velour :

ls -ARgo "[email protected]" | awk '{q += $3} END {print q}'
1
Steven Penny

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.

Sử dụng: Sudo ncdu / (Bạn không cần Sudo cho 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ó biểu diễn đồ họa dòng lệnh Nice 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
Etescartz

du -hd1

sẽ liệt kê ở định dạng con người 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
Boris Yakubchik

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
0
Praveen Kumar BS

Câu hỏi ban đầu hỏi kích thước, nhưng không xác định đó là kích thước trên đĩa hay kích thước thực của dữ liệu.

Tôi đã thấy rằng việc tính toán 'du' có thể khác nhau giữa các máy chủ có cùng phân vùng kích thước bằng cùng một hệ thống tệp. Nếu các đặc điểm hệ thống tệp khác nhau thì điều này có ý nghĩa, nhưng nếu không thì tôi không thể hiểu tại sao. Câu trả lời 'ls | awk "mà Steven Penny đã đưa ra một câu trả lời phù hợp hơn, nhưng vẫn cho tôi kết quả không nhất quán với danh sách tệp rất lớn.

Việc sử dụng 'find' đã mang lại kết quả nhất quán cho hơn 300.000 tệp, ngay cả khi so sánh một máy chủ sử dụng XFS và một máy chủ khác sử dụng EXT4. Vì vậy, nếu bạn muốn biết tổng số byte dữ liệu trong tất cả các tệp thì tôi đề nghị đây là một cách tốt để lấy nó:

find /whatever/path -type f -printf "%s\n"|awk '{q+=$1} END {print q}'
0
Angelo Babudro

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.

0
fromnaboo