Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Xóa tệp cũ hơn X ngày / giờ trong Bash [Ví dụ]

Bài viết này sẽ chỉ cho bạn cách xóa các tệp cũ hơn một số ngày nhất định (hoặc giờ / phút) theo cách thủ công hoặc tự động thông qua tập lệnh Bash. Các ví dụ bao gồm.

Việc xóa các tệp cũ hơn một số ngày nhất định (hoặc phút hoặc giờ) sử dụng hai lệnh Linux - rm tìm .

Xóa tệp bằng rm

Đầu tiên, rm yêu cầu. The rm lệnh được sử dụng để loại bỏ tệp và thư mục trong Linux. Dưới đây là toàn bộ bài viết về cách nó được sử dụng:

Lệnh rm trong Linux [Với các ví dụ]

Chuyển danh sách tệp đã lọc tới rm

Thành phần tiếp theo, find yêu cầu. Tìm thấy lệnh được sử dụng để tìm tệp dựa trên một bộ tiêu chí - trong trường hợp này là tuổi của tệp (thời gian trôi qua kể từ khi nó được sửa đổi). Đây là bài viết của chúng tôi về tìm thấy lệnh:

Tìm lệnh trong Linux [Với các ví dụ hữu ích]

Kết hợp chúng lại với nhau - Ví dụ

Sử dụng find rm cùng nhau:

find /path/to/files/* -mtime +7 -exec rm {} \;

Điều gì đang xảy ra ở đây?

  • tìm được gọi trên thư mục / path / to / files
    • the -mtime tùy chọn được chuyển đến tìm với giá trị +7 được chuyển cho nó - nghĩa là các tệp đã được sửa đổi hơn 7 ngày trước
    • Người thực thi tùy chọn được chuyển để tìm bằng lệnh chạy đối với từng tệp phù hợp
  • rm được gọi bởi -exec tùy chọn trong tìm
    • nó sẽ xóa tất cả các tệp phù hợp với các điều kiện được cung cấp cho find
    • Dấu ngoặc nhọn, dấu gạch chéo và dấu chấm phẩy ở cuối dòng báo hiệu sự kết thúc của lệnh find sẽ chạy trên mỗi tệp phù hợp

Giờ, Phút thay vì Ngày

Để sử dụng phút thay vì ngày làm đơn vị thời gian, bạn có thể thay thế -mmin thay vì -mtime .

find /path/to/files/* -mmin +30 -exec rm {} \;

Ví dụ trên sẽ xóa các tệp cũ hơn 30 phút.

Biến nó thành Tập lệnh

Thay vì gõ nó ra, bạn có thể biến nó thành script

#!/bin/bash

find /path/to/files/* -mtime +7 -exec rm {} \;

Lưu đoạn mã trên vào một tệp (có tên là deletescript.sh, ví dụ), và sau đó nó có thể được gọi bằng cách chạy:

./deletescript.sh

Bạn cũng có thể tạo một bí danh cho lệnh nếu bạn muốn chạy nó từ bất kỳ đâu.

Lập lịch xóa các tệp cũ

Nếu bạn muốn chạy lệnh tự động trong một khoảng thời gian đã đặt, hãy thêm lệnh đó vào crontab của bạn . crontab tệp là nơi lưu giữ các tác vụ đã lên lịch của người dùng trong Linux và nó có thể được chỉnh sửa bằng cách chạy:

crontab -e

Khi chạy ở trên, trình soạn thảo crontab sẽ được hiển thị. Chỉ cần thêm phần sau vào tệp để chạy tập lệnh mỗi ngày:

@daily find /path/to/files/* -mtime +7 -exec rm {} \;