Làm thế nào để tìm ra các thư mục hoặc tập tin tiêu thụ không gian hàng đầu?


11

Đĩa của tôi sắp hết dung lượng:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

Tôi muốn đi qua toàn bộ thư mục chính và tìm ra 10 thư mục hoặc tệp tiêu tốn dung lượng hàng đầu, để quyết định ai sẽ bị xóa.

du -sh *có thể thấy kích thước của tất cả các thư mục con, nhưng nó chỉ nhận được thư mục hiện tại. Tôi có thể cần phải chia thành nhiều tiểu thư tương ứng và đệ quy để có được ai là thủ phạm tôi cần.

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

Câu trả lời:


5

Nếu bạn có thể sử dụng GUI, hãy thử Baobab . Đây là một công cụ đồ họa để phân tích việc sử dụng không gian đĩa cứng.


10

ncdu là một tùy chọn dòng lệnh quét các thư mục và liệt kê việc sử dụng đĩa từ cao nhất đến thấp nhất. Đây là công cụ của tôi cho việc này.

Bạn vẫn sẽ phải lặn theo cách đệ quy theo cách này, nhưng đó là một cách dễ dàng để làm điều đó.


9

Sử dụng lệnh này:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Nó sẽ cho bạn thấy một loại biểu đồ trong dòng lệnh hiển thị các thư mục tiêu thụ phần lớn không gian theo tỷ lệ phần trăm.

Nếu bạn muốn phân tích /homeduy nhất - bạn có thể chỉ định điều này trong lệnh như thế này:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Nó sẽ trông như thế: nhập mô tả hình ảnh ở đây

Lấy từ đây .


9

du | sắp xếp -rn | cái đầu

  • du = Sử dụng đĩa
  • sắp xếp sử dụng thứ tự số, đảo ngược
  • mười dòng đầu tiên

4

+1 cho Baobab. trên dòng lệnh, tôi thường chỉ sử dụng du -hcsx *hoặc du -hcsx * | sort -h(cần một phiên bản gần đây không thành công sort) và sau đó kiểm tra các thư mục con khi tôi tiếp tục.

Ngoài ra, mccó một tính năng gọn gàng trong việc tính toán kích thước thư mục con bằng cách nhấn Ctrl+ Spacetrên đầu trang (nhấn Ctrl+ Spacetrên cùng ..để làm cho nó tính kích thước cho tất cả các thư mục con. Sau đó, bạn có thể chọn sắp xếp theo kích thước trong menu.


2
trên dòng lệnh, bạn nên thử ncdu. Về cơ bản, đó là một ncurses du.
Cướp

1

Thử đi:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10

0

Một GUI yêu thích khác: kdirstat

Nó có khả năng truy sâu tốt và menu công cụ (có thể mở rộng) để giúp bạn xóa / nén các tệp của mình.

Tôi cũng có một tập lệnh dòng lệnh mà tôi gọi là dir_usage mà tôi đã tải lên pastebin.


-1
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Các dòng lệnh ở trên thực hiện như sau (theo thứ tự):

  • Tìm tất cả các tệp (không phải thư mục) trong thư mục hiện tại
  • Hiển thị sử dụng cho từng người trong số họ
  • Sắp xếp kết quả bằng số
  • Chỉ sử dụng 10 dòng cuối cùng (sử dụng cao nhất)
  • Cắt 10 tên tệp (cột đầu tiên là sử dụng, thứ hai là tên tệp)
  • Hiển thị sử dụng cho mỗi tên tệp (ở định dạng con người)

Điều này sẽ dẫn đến một danh sách các kích cỡ có thể đọc được của 10 tệp lớn nhất trong thư mục hiện tại và các thư mục con.


3
Bạn có thể mở rộng khi câu trả lời của bạn?
50-3
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.