Tìm tất cả các tệp lớn trong hệ thống tệp gốc


124

Tôi có một máy chủ linux, hiện đang sử dụng không gian bên dưới:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

Bạn có thể thấy. /ở mức 78%. Tôi muốn kiểm tra xem tập tin hoặc thư mục nào đang chiếm dung lượng.

Tôi đã thử điều này:

find . -type d -size +100M

Hiển thị kết quả như thế này:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

Bây giờ đây là vấn đề của tôi. Tôi chỉ muốn tên của các tệp nằm trong các thư mục đang tiêu tốn dung lượng tại /và không tại /u01hoặc /home. Vì /là cơ sở của mọi thứ, nó hiển thị cho tôi mọi tệp của máy chủ của tôi.

Có thể có được các tập tin lớn đang đóng góp tới 78% /?


3
Xem -xdevvị ngữ tìm. Xem thêm du -kx / | xdu(hoặc xdiskusage).
Stéphane Chazelas


1
có liên quanfind . -type f -print | xargs du -sk | sort -rn
user13107

Câu trả lời:


217

Thử:

find / -xdev -type f -size +100M

Nó liệt kê tất cả các tệp có kích thước lớn hơn 100M.

Nếu bạn muốn biết về thư mục, bạn có thể thử ncdu.

Nếu bạn không chạy Linux, bạn có thể cần sử dụng -size +204800hoặc -size +104857600c, vì Mhậu tố có nghĩa là megabyte không có trong POSIX.

find / -xdev -type f -size +102400000c

1
-xdevchỉ ngăn không cho tìm thấy đi bộ trên các hệ thống tập tin, vì vậy bạn sẽ chỉ tìm kiếm ổ đĩa vật lý hiện tại của bạn. Nếu đó không phải là những gì bạn muốn, chỉ cần loại bỏ các đối số -xdev.
hobs

49

Ngoài câu trả lời @Gnouc, bạn cũng có thể thêm ls -lađể biết thêm chi tiết. Bạn nên sudo privilegeslàm điều đó.

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

Để chỉ xem các tệp trong gigbyte, hãy làm:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2

44

Lệnh sau không chỉ tìm cho bạn 50 tệp lớn nhất (> 100M) trên hệ thống tệp của bạn, mà còn sắp xếp (GNU sort) theo mức lớn nhất:

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev Đừng xuống thư mục trên các hệ thống tập tin khác.

Khi findsử dụng BSD -xtương đương với -xdevchính không dùng nữa .

Đối với tất cả các tệp và thư mục, nó thậm chí còn dễ dàng hơn:

du -ahx / | sort -rh | head -20

( -xcờ là những gì cần thiết để ràng buộc duvới một hệ thống tập tin duy nhất)

Nếu bạn không sử dụng GNU sort(từ coreutils), hãy sử dụng nó mà không có -h:

du -ax / | sort -rn | head -20

Chỉ dành cho thư mục hiện tại (để có kết quả nhanh hơn), hãy thay thế /bằng ..


1
Tôi sẽ đề cập rằng phương pháp này là tốt bởi vì -hhiển thị đầu ra có thể đọc được của con người và thêm một đầu ra mẫu.
Ciro Santilli 心 心

Giải pháp rất tốt. Cảm ơn bạn.
Bắt đầu
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.