จะลบไฟล์ที่ถูกแก้ไขระหว่างวันที่ระบุได้อย่างไร


12

เช่นเดียวกับในหัวข้อ: ฉันต้องการลบไฟล์ในไดเรกทอรีที่ได้รับการแก้ไขในช่วงวันที่ที่ต้องการ ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


18

คำสั่งGNU findเป็นวิธีที่จะไป ตัวอย่างเช่นหากต้องการลบไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันระหว่าง 1 ถึง 5 สิงหาคมคุณสามารถใช้คำสั่งต่อไปนี้

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

มันจะดีกว่าที่จะดำเนินการคำสั่งโดยไม่ต้อง-deleteดำเนินการก่อนที่จะเห็นรายชื่อของไฟล์ที่สนใจ (ตัวแทนที่ดีอาจจะมี-lsการผลิตที่ LS-เช่นรายชื่อ)

การลบ-maxdepth 1ข้อมูลจำเพาะจะเข้าไปในไดเรกทอรีย่อยทั้งหมดด้วย

คุณยังสามารถระบุชั่วโมงได้เช่นกัน

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

ถูกเตือนว่าอย่าลบเครื่องหมายอัญประกาศเดี่ยวซึ่งจะป้องกันช่องว่างระหว่างวันที่และเวลา

ตัวละคร!เป็นตัวปฏิเสธคุณควรอ่าน: ใหม่กว่าว่าวันที่นี้ แต่ไม่ใหม่กว่านี้วันอื่น ๆ


ขอบคุณสำหรับการตอบ. ฉันสามารถใช้บางอย่างเพื่อเลือกช่วงเวลาได้หรือไม่ และ '!' คืออะไร ใช้สำหรับ ?
Patryk

!เป็นไม่ได้ ในตัวอย่างนี้: ไม่ใหม่กว่า 2011-08-06
con-f-use

@lordmonkey: ดูการแก้ไขของฉันในคำตอบ
enzotib

3
+1 ฉันไม่ทราบ - ลบคำกริยา บางทีมันอาจจะไม่จำเป็น -type fแต่ผมจะเพิ่ม
MichałŠrajer

@ MichałŠrajer: คำแนะนำที่ดีสำหรับ-type fฉันลืมไปแล้ว -deleteเป็นส่วนขยาย GNU ผมคิดว่า
enzotib
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.