Cách nhanh chóng để hiển thị kích thước của mỗi thư mục con trong một thư mục


9

Tôi muốn kiểm tra thư mục nào chiếm nhiều dung lượng đĩa nhất, nhanh chóng.

Tôi đã thử du -sh subdirnhưng mất hơn 20 giây trên các thư mục lớn hơn.

Tôi không chắc làm thế nào để hiển thị kích thước của tất cả các thư mục con trong thư mục chính cùng một lúc với phương thức này, nhưng tôi sợ rằng có thể mất vài phút ...

Có một cách nhanh chóng để làm điều này?

Tôi không cần hiển thị kích thước của tập tin, chỉ cần thư mục.


Để tìm hiểu một cách tương tác những gì chiếm nhiều không gian nhất, bạn có thể sử dụngncdu
jfs

Câu trả lời:


12

Thư mục mẫu

$ ls -aF
./  ../  .asd/  folder1/  folder2/  list  t1  t2  xyz/

Để tìm kích thước chỉ cho các thư mục, không bao gồm các thư mục ẩn:

$ find -type d -name '[!.]*' -exec du -sh {} + 
4.0K    ./folder1
4.0K    ./folder2
8.0K    ./xyz

Nếu bạn cần tổng số cuối cùng là tốt:

$ find -type d -name '[!.]*' -exec du -ch {} + 
4.0K    ./folder1
4.0K    ./folder2
8.0K    ./xyz
16K total

Để sắp xếp kết quả:

$ find -type d -name '[!.]*' -exec du -sh {} + | sort -h
4.0K    ./folder1
4.0K    ./folder2
8.0K    ./xyz

Để đảo ngược thứ tự sắp xếp:

$ find -type d -name '[!.]*' -exec du -sh {} + | sort -hr
8.0K    ./xyz
4.0K    ./folder2
4.0K    ./folder1

Nếu bạn cần với các thư mục ẩn, hãy xóa -name '[!.]*'khỏi lệnh find. Tôi không biết bất kỳ lệnh nào khác để tìm kích thước của các thư mục nhanh hơn du. Sử dụng dfchofile system disk space usage

Sử dụng find -maxdepth 1 -type d -name '[!.]*' -exec du -sh {} +để tránh các thư mục con hiển thị


1
đây là một câu trả lời hay và có thể dễ dàng điều chỉnh để chỉ hiển thị các thư mục từ một người dùng nhất định bằng cách sử dụng tên người dùng
rafaelvalle

Tại sao sẽ $ find -type d -name '[!.]*' -exec du -sh {} +nhanh hơn chỉ du -sh subdir? - không phải nó là cùng một lệnh cuối cùng sao?
Framester

1
@Framester xin lỗi nếu đó là mất của bạn khỏi những câu trả lời .. Tôi đã chỉ minh họa sử dụng find+dunhư OP hỏi display the size of all the subdirectories... Tôi đề cập đến trong câu trả lời mà tôi không biết nếu có một lệnh đó là nhanh hơn du.. sử dụng findlà để hạn chế loại tập tin / thư mục nào bạn muốn gửi đếndu
Sundeep

1
+1 cho sort -h- đó là một lá cờ tuyệt vời để biết
spinup

5

Sử dụng gói ncdu. bạn có thể cài đặt nó bằng cách sudo apt-get install ncdu.
trên máy chủ, bạn có thể sử dụng nó với các tùy chọn ncdu -q -x(Chế độ im lặng và thư mục được gắn kết).

Ncdu vs du / df

Giao diện của ncdu được xây dựng bằng ncurses và có tính tương tác. Ncdu khác với df hoặc du. Ncdu chỉ thực hiện một nhiệm vụ báo cáo không gian được sử dụng bởi một thư mục và đi sâu vào. Mặt khác, lệnh df báo cáo không gian được sử dụng bởi các thiết bị lưu trữ khác nhau.

Vì vậy, ncdu là một công cụ mạnh mẽ để giám sát, kiểm tra và phân tích việc sử dụng không gian đĩa trên hệ thống linux của bạn


1
Điều này có vẻ như nó có thể hữu ích, nhưng nó nhanh hơn du?
spinup

4

Tất cả các thư mục chiếm cùng một dung lượng, cụ thể là 4096 byte. Bạn không muốn biết kích thước của các thư mục, nhưng kích thước của những gì trong đó. Và nhu cầu này đếm, mà lần lượt đòi hỏi thời gian.

duđếm kích thước thư mục theo mặc định. Vì vậy, để có được kích thước cho nó:

cd && du

Hoặc là

du ~

Xem man duđể có thêm lựa chọn.


1

Sử dụng lệnh sau, nó sẽ hiển thị nhanh chóng 10 thư mục hàng đầu theo kích thước chiếm trong hệ thống:

du -hsx / * | sắp xếp -rh | đầu -10

Đầu ra, ví dụ

[root@x ~]# du -hxs /* | sort -rh | head -10

10G     /mnt
5.4G    /usr
1.5G    /var
418M    /lib
274M    /opt
224M    /root
55M     /boot
36M     /home
30M     /lib64
16M     /sbin
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.