วิธีการลบไฟล์ใน linux ที่เก่ากว่า 1 ปี? [ซ้ำ]


9

เป็นไปได้ซ้ำ:
ฉันจะลบไฟล์ที่มากกว่าวันที่กำหนดบน linux ได้อย่างไร

วิธีการลบไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันและมันเป็นไดเรกทอรีย่อยเก่ากว่าหนึ่งปี?


1
man findDo ความเจริญ

1
หมายเหตุสำหรับคนใกล้ชิด: คำถามอื่นนั้นจริง ๆ แล้วแตกต่างกันอย่างสับสนคำตอบของคำถามไม่ตรงไปตรงมาอย่างสิ้นเชิง
Gilles 'หยุดชั่วร้าย'

คำตอบ:


15
find /the/dir/to/start/in -type f -mtime +365 -ls -exec rm -f -- {} \;

2
find /path/to/files -type f -mtime +365 -deleteจะง่ายขึ้น
Chris S

-delete ไม่ได้อยู่ใน aix ของฉันดังนั้นฉันจึงไม่คุ้นเคยกับการใช้มัน ฉันดีใจที่มีการนำไปใช้ในการค้นหาไบนารีอื่น ๆ
bot403

find … -exec rm -f {} +จะเร็วขึ้นเล็กน้อย (และพกพาได้ยกเว้นระบบโบราณ)
Gilles 'หยุดชั่วร้าย'

1
นอกจากนี้ควรใช้--ในกรณีที่ชื่อไฟล์ขึ้นต้นด้วย-(แม้ว่าคุณจะสามารถรับประกันได้ว่ามันจะไม่เกิดขึ้นหากไดเรกทอรีส่งผ่านไปfindยังไม่ขึ้นต้นด้วย-)
Gilles 'หยุดชั่วร้าย'

นี่เป็นอันตรายอย่างยิ่งเนื่องจากคุณไม่เห็นสิ่งที่คุณกำลังจะลบและทำไมคุณต้องบังคับให้ลบด้วย -f ไฟล์บางไฟล์ได้รับการป้องกันด้วยเหตุผล การเก็บผลลัพธ์การค้นหาลงในไฟล์นั้นปลอดภัยกว่ามากแล้วตรวจสอบและเรียกใช้ rm กับเนื้อหาของไฟล์
Petr

2

หากคุณลบไฟล์จำนวนมากโดยทั่วไปจะเร็วกว่า "-exec" หรือไปที่ "xargs":

find . -type f -mtime +365 | perl -lne unlink
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.