Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

ลบไฟล์ที่เก่ากว่า X วัน/ชั่วโมงใน Bash [ตัวอย่าง]

บทความนี้จะแสดงวิธีลบไฟล์ที่เก่ากว่าจำนวนวันที่กำหนด (หรือชั่วโมง/นาที) ด้วยตนเองหรือโดยอัตโนมัติผ่านสคริปต์ทุบตี รวมตัวอย่าง

การลบไฟล์ที่เก่ากว่าจำนวนวัน (หรือนาที หรือชั่วโมง) ที่กำหนดจะใช้คำสั่ง Linux สองคำสั่ง – rm และ ค้นหา .

การลบไฟล์ด้วย rm

ก่อนอื่น rm สั่งการ. rm คำสั่งใช้เพื่อ ลบ ไฟล์และไดเร็กทอรีใน Linux นี่คือบทความทั้งหมดเกี่ยวกับวิธีการใช้งาน:

rm Command ใน Linux [พร้อมตัวอย่าง]

ส่งรายการไฟล์ที่กรองไปยัง rm

องค์ประกอบต่อไป ค้นหา สั่งการ. การ ค้นหา คำสั่งใช้เพื่อค้นหาไฟล์ตามชุดเกณฑ์ - ในกรณีนี้คืออายุของไฟล์ (เวลาที่ผ่านไปตั้งแต่มีการแก้ไข) นี่คือบทความของเราเกี่ยวกับ fin คำสั่ง:

ค้นหาคำสั่งใน Linux [พร้อมตัวอย่างที่เป็นประโยชน์]

รวมเข้าด้วยกัน – ตัวอย่าง

ใช้ ค้นหา และ rm ร่วมกัน:

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

เกิดอะไรขึ้นที่นี่?

  • ค้นหา ถูกเรียกในไดเร็กทอรี /path/to/files
    • -mtime ตัวเลือกจะถูกส่งต่อไปยัง find ด้วยค่า +7 ผ่านไปแล้ว – หมายถึงไฟล์ที่ถูกแก้ไขเมื่อ 7 วันก่อน
    • ผู้บริหาร ผ่านตัวเลือกเพื่อค้นหาด้วยคำสั่งให้รันกับไฟล์ที่ตรงกันแต่ละไฟล์
  • rm ถูกเรียกโดย -exec ตัวเลือกใน ค้นหา
    • จะลบไฟล์ทั้งหมดที่ตรงกับเงื่อนไขที่กำหนดให้กับ find
    • วงเล็บปีกกา เครื่องหมายทับ และเครื่องหมายอัฒภาคที่ท้ายบรรทัดเป็นสัญญาณการสิ้นสุดคำสั่ง find ควรรันในแต่ละไฟล์ที่ตรงกัน

ชั่วโมง นาที แทนที่จะเป็นวัน

หากต้องการใช้นาทีแทนวันเป็นหน่วยเวลา คุณสามารถแทนที่ -mmin แทน -mtime .

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

ตัวอย่างข้างต้นจะลบไฟล์ที่เก่ากว่า 30 นาที

สร้างเป็นสคริปต์

แทนที่จะพิมพ์ออกมา คุณสามารถทำให้มันเป็นสคริปต์ได้

#!/bin/bash

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

บันทึกตัวอย่างด้านบนลงในไฟล์ (ชื่อ deletescript.sh, ตัวอย่างเช่น) จากนั้นเรียกใช้ได้:

./deletescript.sh

คุณยังสามารถสร้างนามแฝงสำหรับคำสั่งได้หากต้องการเรียกใช้จากทุกที่

กำหนดการลบไฟล์เก่า

หากคุณต้องการเรียกใช้คำสั่งโดยอัตโนมัติตามช่วงเวลาที่กำหนด ให้เพิ่มลงใน crontab . crontab file คือที่ที่ผู้ใช้เก็บงานตามกำหนดเวลาไว้ใน Linux และสามารถแก้ไขได้โดยการเรียกใช้:

crontab -e

เมื่อเรียกใช้ด้านบน ตัวแก้ไข crontab จะปรากฏขึ้น เพียงต่อท้ายไฟล์ต่อไปนี้เพื่อเรียกใช้สคริปต์ทุกวัน:

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