Bài viết chỉ cách xóa file cũ hơn số ngày cho trước (hoặc giờ/phút) thủ công hoặc tự động qua script Bash. Có ví dụ.
Xóa file cũ hơn số ngày (hoặc phút, giờ) dùng 2 lệnh Linux – rm và find.
Xóa file với rm
Trước hết, lệnh rm. Lệnh rm dùng remove file và thư mục Linux. Xem bài chi tiết:
rm Command in Linux [With Examples]
Truyền danh sách file lọc cho rm
Thành phần tiếp theo, lệnh find. Lệnh find tìm file theo tiêu chí – ở đây là tuổi file (thời gian kể từ lần sửa đổi). Xem bài find:
Find Command in Linux [With Useful Examples]
Kết hợp – Ví dụ
Dùng find và rm cùng nhau:
find /duong/dan/toi/files/* -mtime +7 -exec rm {} \; Đang xảy ra gì?
- find gọi trên thư mục /duong/dan/toi/files
- tùy chọn -mtime giá trị +7 – file sửa đổi hơn 7 ngày trước
- Tùy chọn exec chạy lệnh trên mỗi file khớp
- rm được gọi bởi -exec của find
- xóa tất cả file khớp điều kiện find
- Ngoặc nhọn, dấu chéo, chấm phẩy cuối dòng báo hiệu kết thúc lệnh find chạy trên file khớp
Giờ, Phút thay vì Ngày
Dùng phút thay ngày, thay -mmin cho -mtime.
find /duong/dan/toi/files/* -mmin +30 -exec rm {} \; Ví dụ xóa file cũ hơn 30 phút.
Chuyển thành Script
Thay vì gõ lại, làm script:
#!/bin/bash find /duong/dan/toi/files/* -mtime +7 -exec rm {} \; Lưu đoạn trên vào file (ví dụ deletescript.sh), gọi bằng:
./deletescript.sh
Cũng có thể tạo alias cho lệnh chạy từ đâu.
Lên lịch xóa file cũ tự động
Muốn chạy tự động khoảng thời gian cố định, thêm vào crontab. File crontab chứa task định kỳ user Linux, sửa bằng:
crontab -e
Chạy lệnh trên, trình soạn thảo crontab hiện ra. Thêm dòng sau vào file chạy script mỗi ngày:
@daily find /duong/dan/toi/files/* -mtime +7 -exec rm {} \;