คำสั่งที่ใช้ลบไฟล์เก่าที่มีอายุเกิน x วัน - คำสั่งนั้นก็คือ:

DOS - มาดูที่ DOS หรือ CMD ของ Windows กันก่อน ตัวอย่างคือจะลบไฟล์ นามสกุล .log ที่อยู่ในโฟลเดอร์ C:\path_to_files และ Subfolder ที่มีอายุเกิน 10 วัน

คำสั่ง:
C:\>cd c:\path_to_files - ย้าย path ไปก่อน
forfiles /S /D -10 /M *.log /C "cmd /c del @file"

คำอธิบาย:
forfiles เป็นการหาไฟล์ตามเงื่อนไข ในที่นี้คือ

  • หาไฟล์ที่โฟลเดอร์ที่เราอยู่ (ค่า default)
  • /S หาที่ Subfolder ด้วย
  • /D -10 หาไฟล์ที่มีอายุเกิน 10 วัน
  • /M *.log macthing ชื่อไฟล์ *.log
  • สุดท้ายคือ /C "cmd /c del @file" ส่งชื่อไฟล์ที่หาเจอไปที่คำสั่ง del เพื่อลบไฟล์นั่นเอง

เข้าใจแล้วนะ - แต่ถ้ายังอยากอ่านเพิ่มเติมนะเหรอ? ที่นี่เลย FORFILES.exe หรือ forfiles /?

Linux - คราวนี้มาดูบน Linux บ้าง

คำสั่ง:
find /path_to_files -name "*.log" -mtime +10 -exec rm {} \;

คำอธิบาย:
find ใช้คำสั่งนี้ในการหาไฟล์

  • ระบุ path_to_files
  • -name "*.log" หาชื่อไฟล์ตามที่บอก
  • -mtime +10 ไฟล์ที่ถูก modified นานกว่า 10 วัน (เก่าเกิน 10x24 ชม.)
  • ส่วนสุดท้าย -exec rm {} \; ส่งไฟล์ที่หามาได้ไปให้คำสั่ง rm ก็คือลบไฟล์นั่นเอง

รายละเอียดเพิ่มเติมดู man find | more เพื่อความรอบรู้ และ เพื่อความปลอดภัยทั้งใน Linux และบน DOS แนะนำว่าให้เราลองหาไฟล์ดูก่อน หาดูก่อนให้แน่ใจว่าเจออะไร อย่าเพิ่งรีบสั่งต่อให้ลบอะไรไป และนั่นก็คือเปลี่ยนกับตัดคำสั่งออกให้เป็นตามนี้ก่อน

forfiles /S /D -10 /M *.log /C "cmd /c echo @file"(DOS)
find /path_to_files -name "*.log" -mtime +10 (Linux)