บทความนี้จะแสดงวิธีลบไฟล์ที่เก่ากว่าจำนวนวันที่กำหนด (หรือชั่วโมง/นาที) ด้วยตนเองหรือโดยอัตโนมัติผ่านสคริปต์ทุบตี รวมตัวอย่าง
การลบไฟล์ที่เก่ากว่าจำนวนวัน (หรือนาที หรือชั่วโมง) ที่กำหนดจะใช้คำสั่ง 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 {} \;