Tệp lớn hơn 1 GB trở lên hơn 6 tháng


20

Tôi muốn tìm các tệp lớn hơn 1 GB và cũ hơn 6 tháng trong toàn bộ máy chủ. Làm thế nào để viết một lệnh cho điều này?

Câu trả lời:


37

Sử dụng find:

find /path -mtime +180 -size +1G

-mtimecó nghĩa là tìm kiếm thời gian sửa đổi lớn hơn 180 ngày (+180). Và -sizetham số tìm kiếm các tệp lớn hơn 1GB.


2
Lưu ý rằng trong các findtriển khai có Ghậu tố đó được hỗ trợ, nó có nghĩa là GiB (1073741824 byte), không phải GB (1000000000). Có thể bạn sẽ sử dụngfind /path -mtime +180 -size +1073741824c
Stéphane Chazelas

1
nếu bạn muốn tránh gặp lỗi giữa danh sách các tệp như sau: find: a.txt :Permission deniedTôi khuyên bạn nên thêm 2>/dev/nullcảm hứng này từ nhận xét này: unix.stackexchange.com/questions/42841/ Lỗi
gmansour

Bạn cũng có thể dẫn các kết quả vào xargs ls -lhSđể sắp xếp chúng theo kích thước: find /path -mtime +180 -size +1G | xargs ls -lhS
user553965

@ user553965 Lệnh của bạn sẽ không hoạt động. Những gì thực sự cần thiết để sắp xếp theo kích thước là : find / -size +1G -mtime +180 -print0 2>/dev/null | xargs -0 ls -lhS. Người mới lưu ý: Việc chuyển hướng 2>/dev/nullchỉ cần loại bỏ các permission deniedlỗi chắc chắn sẽ xuất hiện khi tìm kiếm từ root. Để sắp xếp theo ngày sửa đổi cuối cùng, ls -lhtthay vào đó và thêm rvào các lslệnh, ví dụ ls -lhSr, sẽ đảo ngược kết quả (nhỏ nhất đến lớn nhất / cũ nhất đến mới nhất).
mattst

6

find / -size +1G -mtime +180 -type f -print

Dưới đây là giải thích về tùy chọn lệnh theo tùy chọn: Bắt đầu từ thư mục gốc, nó tìm thấy tất cả các tệp lớn hơn 1 Gb, được sửa đổi hơn 180 ngày trước, thuộc loại "tệp" và in đường dẫn của chúng.

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.