มีคำสั่งให้ลบไฟล์ทั้งหมดในไดเรกทอรีที่ไม่ได้รับการแก้ไขใน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
ทำให้แน่ใจว่าสิ่งนี้จะไม่ลบสิ่งที่พวกเขาต้องการเก็บไว้ ใช่พูดจากประสบการณ์ที่นี่