ตามเวลาไฟล์จำนวนมากยังคงอยู่ในระบบของฉันและฉันไม่ต้องการมันอีกต่อไปดังนั้นจะลบไฟล์ทั้งหมดที่มีอายุอย่างน้อยหนึ่งปีได้อย่างไร
ตามเวลาไฟล์จำนวนมากยังคงอยู่ในระบบของฉันและฉันไม่ต้องการมันอีกต่อไปดังนั้นจะลบไฟล์ทั้งหมดที่มีอายุอย่างน้อยหนึ่งปีได้อย่างไร
คำตอบ:
คุณสามารถทำได้ด้วยคำสั่งนี้
find /path/to/files* -mtime +365 -exec rm {} \;
บางคนอธิบาย
/path/to/files*
เป็นเส้นทางไปยังไฟล์
-mtime
ใช้เพื่อระบุจำนวนวันที่ไฟล์นั้นเป็น +365 จะค้นหาไฟล์ที่เก่ากว่า 365 วันซึ่งเป็นหนึ่งปี
-exec
อนุญาตให้คุณส่งคำสั่งเช่น rm
แก้ไขด้วย @Oli note -> คุณสามารถทำได้โดย:
find /path/to/files* -mtime +365 -delete
"{}"
เข้าไป{}
ก่อนที่จะผ่านมันไปfind
ในสถานที่แรกแล้วfind
เพื่อทดแทนมัน quoting. {}
เป็นข้อเสนอแนะในกรณี{
และ}
ตัวเองบางครั้งอาจได้รับการปฏิบัติเป็นพิเศษโดยเปลือก - ซึ่งมีอะไรจะ ทำกับช่องว่างและมัก{}
จะไม่ต้องอ้างถึงฉันไม่สามารถนึกถึงสถานการณ์ใด ๆ ได้อย่างน้อยเมื่อเรียกใช้การค้นพบจากเชลล์สไตล์ Bourne เมื่อ{}
ไม่มีสิ่งใดอยู่ภายในจะปรากฏตัวเป็นอาร์กิวเมนต์ จะต้องมีการยกมาคุณสามารถ?)
find
จัดการกับการหลบหนีสำหรับตัวเอง แต่มันก็ไม่ได้เป็นนิสัยที่ดีในขณะที่สคริปต์ มันไม่เจ็บ
find
ไม่ได้จัดการกับการหลบหนี"{}"
จะยังคงมีผลเช่นเดียวกับ - {}
ไม่สามารถใช้งานได้แทนที่จะทำงานทั้งคู่ สิ่งนั้น{}
และ"{}"
ประพฤติตนเหมือนกันไม่ใช่ - และไม่สามารถทำได้ - เนื่องจากคุณสมบัติพิเศษในการค้นหา ความสับสนในสิ่งที่ได้รับการขยายโดยเชลล์กับสิ่งที่เพิ่มขึ้นโดยบางโปรแกรมอื่น ๆเป็นนิสัยที่ไม่ดี เราทุกคนทำผิดพลาดเป็นครั้งคราว แต่ก็ยังผิดพลาด - ไม่ใช่วิธีปฏิบัติที่ดีที่สุด (ใครบางคนอาจยังอ้าง{}
เพื่อช่วยให้มนุษย์เห็นว่ามันไม่ใช่รูปแบบสำหรับการขยายตัวของรั้ง แต่ไม่เกี่ยวข้องกับการแยกคำ)
{}
ใน-exec
เพื่อให้อ่าน-exec rm "{}" \;
) ซึ่งทำให้แน่ใจว่าช่องว่างที่ได้รับการจัดการอย่างถูกต้อง ... และคุณก็สามารถใช้ฟังก์ชั่นแทน-delete
-exec