มีคำสั่งให้ลบไฟล์ทั้งหมดในไดเรกทอรีที่ไม่ได้รับการแก้ไขในNวันหรือไม่? ฉันต้องล้างบันทึกเก่า ๆ
มีคำสั่งให้ลบไฟล์ทั้งหมดในไดเรกทอรีที่ไม่ได้รับการแก้ไขในNวันหรือไม่? ฉันต้องล้างบันทึกเก่า ๆ
คำตอบ:
การดำเนินการนี้จะลบไฟล์ทั้งหมดที่เก่ากว่า 5 วันคุณสามารถใส่ไฟล์-name '*log'ในนั้นให้แม่นยำยิ่งขึ้นและคุณอาจต้องการระบุmaxdepthคำสั่ง find ใน
find /some/dir -type f -mtime +5 -delete
/ some/dir/เวอร์ชั่น :(
ด้วยzshและตัวระบุแบบ(.m+n) กลม : .เลือกเฉพาะไฟล์ปกติm+nเลือกไฟล์ที่ถูกดัดแปลงมากกว่าnวันก่อน
เช่นแสดงรายการไฟล์ในไดเรกทอรีปัจจุบันที่ถูกแก้ไขมากกว่า 9 วันที่ผ่านมา:
print -rl -- *(.m+9)
เพิ่มDเพื่อรวมไฟล์ dot:
print -rl -- *(D.m+9)
หรือถ้าคุณต้องการที่จะเรียกคืน (และรายการเช่นไฟล์ที่ลงท้ายด้วย.log):
setopt extendedglob
print -rl -- **/*.log(.m+9)
แทนที่print -rlด้วยrmหากคุณพอใจกับผลลัพธ์ แม้ว่าคุณอาจจะต้องใช้zargsถ้าคุณมีไฟล์จำนวนมาก (เพื่อหลีกเลี่ยงรายการอาร์กิวเมนต์นานเกินไป ):
autoload zargs
zargs ./**/*(.m+9) -- rm
-lsแทนที่จะ-deleteทำให้แน่ใจว่าสิ่งนี้จะไม่ลบสิ่งที่พวกเขาต้องการเก็บไว้ ใช่พูดจากประสบการณ์ที่นี่