Tìm tập tin sử dụng nhiều dung lượng đĩa nhất


43

Có thể liệt kê các tệp lớn nhất trên ổ cứng của tôi không? Tôi thường xuyên sử dụng df -Hđể hiển thị mức sử dụng đĩa của mình, nhưng điều này chỉ cung cấp cho tỷ lệ phần trăm đầy đủ, GB còn lại, v.v.

Tôi thực hiện nhiều tính toán chuyên sâu về dữ liệu, với một số lượng lớn các tệp nhỏ và một số lượng rất nhỏ các tệp rất lớn. Vì hầu hết không gian đĩa của tôi được sử dụng là trong một số lượng tệp rất nhỏ, nên có thể khó theo dõi vị trí của các tệp lớn này. Xóa tệp 1 kB không tốn nhiều dung lượng, nhưng xóa tệp 100 GB thì có. Có cách nào để sắp xếp các tập tin trên ổ cứng theo kích thước của chúng không?

Cảm ơn.


Câu trả lời:


47

Với các công cụ có sẵn tiêu chuẩn:

Để liệt kê 10 tệp lớn nhất từ ​​thư mục hiện tại: du . | sort -nr | head -n10

Để liệt kê các thư mục lớn nhất từ ​​thư mục hiện tại: du -s * | sort -nr | head -n10

CẬP NHẬT Những ngày này tôi thường sử dụng một hình thức dễ đọc hơn (như Jay Chakra giải thích trong một câu trả lời khác và bỏ qua | head -n10, chỉ cần để nó cuộn ra khỏi màn hình. Dòng cuối cùng có tệp hoặc thư mục lớn nhất (cây).

Đôi khi, ví dụ. khi bạn có nhiều điểm gắn kết trong thư mục hiện tại, thay vì sử dụng -xhoặc nhiều điểm --exclude=PATTERN, sẽ dễ dàng hơn để gắn hệ thống tập tin vào một điểm gắn kết không sử dụng ( thường /mnt ) và làm việc từ đó.

Xin lưu ý rằng khi làm việc với khối lượng lớn (NFS), bạn có thể gây ra tải trọng đáng kể cho phụ trợ lưu trữ (filer) khi chạy dutrên nhiều thư mục (phụ). Trong trường hợp đó, tốt hơn là xem xét cài đặt quotatrên âm lượng.


3
Đối với tùy chọn đầu tiên của bạn, bạn không thể liệt kê chúng với ls -Sl | head?
Bernhard

Không, duđi qua toàn bộ cây thư mục, trong khi ls -S chỉ kiểm tra thư mục hiện tại.
jippie

35

Thêm vào câu trả lời của jippie

Để liệt kê các thư mục lớn nhất từ ​​thư mục hiện tại ở định dạng có thể đọc được:

du -sh * | sort -hr | head -n10

Mẫu vật:

[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

Nó làm cho nó thuận tiện hơn để đọc :)


14

Hãy thử ncdu, vì nó có thể cung cấp cho bạn một cái nhìn tổng quan về việc sử dụng đĩa. Từ trang web của nó:

Một bộ phân tích sử dụng đĩa với giao diện ncurses, nhằm mục đích được chạy trên một máy chủ từ xa nơi bạn không có toàn bộ thiết lập gaphical, nhưng phải thực hiện với kết nối SSH đơn giản. ncdu nhằm mục đích nhanh chóng, đơn giản và dễ sử dụng và có thể chạy trong mọi môi trường giống như POSIX tối thiểu với các cài đặt ncurs.


3

(gnu)

du -max /dir | sort -nSẽ hiển thị các tệp lớn cũng như các thư mục lớn, có thể được sử dụng để xác định nơi bạn cần thực hiện một số dọn dẹp.

du -max | sort -n | tail -1000
...
46632   ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816   ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220  ./UnitedLinux/apt/i386/RPMS.updates
679248  ./UnitedLinux/apt/i386
679252  ./UnitedLinux/apt
691820  ./UnitedLinux/i586
691836  ./i386/update/SuSE-SLES/8/rpm/i586
695192  ./i386/update/SuSE-SLES/8/rpm
695788  ./i386/update/SuSE-SLES/8
695792  ./i386/update/SuSE-SLES
695804  ./i386/update
695808  ./i386
1390184 ./UnitedLinux

(Tôi biết đó là một cây khá già: p)


2

Có một cách đơn giản và hiệu quả để tìm kích thước của mọi tệp và thư mục trong Ubuntu:

Ứng dụng> Phụ kiện> Trình phân tích sử dụng đĩa

trong cửa sổ này, nhấp vào nút "Quét hệ thống tập tin" trên thanh công cụ. sau một thời gian ngắn (giây) bạn có thể sử dụng đĩa của mọi thư mục và tệp.



0

Bạn có thể thử với lệnh này, nó sẽ liệt kê tất cả các tệp lớn hơn 20Mb.

find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
  | awk '{ print $NF ": " $5 }'  | sort -hrk 2,2

3
Nếu tệp lớn nhất trên hệ thống tệp của bạn là 20 MB, có thể bạn sẽ không còn thiếu dung lượng đĩa. Ít nhất là với bất kỳ HD nào đã tạo ra thiên niên kỷ này
Kevin

Đó chỉ là ví dụ, bạn đặt ở đó bất cứ điều gì bạn muốn. Nó sẽ tìm thấy mọi thứ lớn hơn 20MB, không chỉ các tệp 20 MB.
patseb

ls -lhsau đó sort?? ls -shoặc stat -c %bcó lẽ tốt hơn
Mikel

Tôi không nhận được. Ví dụ của tôi sử dụng ls, và sắp xếp. Anh ta muốn tìm tập tin trên toàn bộ đĩa chứ không phải thư mục.
patseb

0

gõ lệnh sau

cd /

sau đó gõ

du -sh * | grep G

Lệnh trên cho bạn thấy có bao nhiêu bộ nhớ được sử dụng bởi thư mục nào. sau đó bạn phải quyết định thư mục hoặc tập tin nào bạn muốn xóa


-2

Bạn có thể thử với lệnh này, nó sẽ liệt kê các tệp lớn:

ls -lrS | tail -1

hiển thị thư mục hiện tại, không phải toàn bộ ổ cứng.
slm

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.