Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Xóa file cũ trong Bash: Xóa theo ngày, giờ, phút (Ví dụ)

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 {} \;