ค้นหาความแตกต่างด้วย mtime - และ +


5

อะไรคือความแตกต่างระหว่างmtime's -และ+สวิตช์' เนื่องจากทั้งคู่ไม่ได้นำผลลัพธ์ที่ฉันต้องการกลับมา

ฉันต้องการลบไฟล์ทั้งหมดที่เก่ากว่า 5 วัน:

 find /mnt/sdb1/tmp/ -type f -mtime +5 -exec ls {} \;
 find /mnt/sdb1/tmp/ -type f -mtime -5 -exec ls {} \;

ฉันเปลี่ยนผลลัพธ์เป็นlsเพื่อเปรียบเทียบผลลัพธ์

คำตอบ:


9

จากfindหน้าคนของ:

    Numeric arguments can be specified as

   +n     for greater than n,
   -n     for less than n,
    n     for exactly n.

  -mtime n
          File's data was last modified n*24 hours ago.  See the comments for 
          -atime to understand how rounding  affects  the  interpretation  of
          file  modification times.

   -atime n
          File was last accessed n*24 hours  ago.   When  find  figures  out  
          how  many 24-hour  periods  ago  the  file  was  last  accessed, any 
          fractional part is ignored, so to match -atime +1, a file has to have 
          been accessed at least two days ago.

ดังนั้น-mtime +5จะพบไฟล์เหล่านั้นแก้ไขล่าสุดมากขึ้นกว่า 5 * 24 ชั่วโมงที่ผ่านมาและ-mtime -5จะพบไฟล์เหล่านั้นแก้ไขล่าสุดน้อยกว่า 5 * 24 ชั่วโมงที่ผ่านมา ในการลบไฟล์ที่เก่ากว่า 5 วัน1คุณจะทำ:

find /mnt/sdb1/tmp/ -type f -mtime +5 -exec rm {} \;

หากสิ่งนี้ไม่ส่งคืนผลลัพธ์ที่คุณต้องการอาจมีปัญหากับการประทับเวลา มีการรายงานอย่างถูกต้องสำหรับไฟล์ที่เป็นปัญหาหรือไม่ หากนี่คือไดรฟ์ USB ภายนอกไฟล์อาจถูกสร้างขึ้นในเครื่องอื่นและมี timstamp ที่แตกต่างจากที่คุณคาดไว้


1 โปรดทราบว่าหน่วยที่นี่คือวัน 24 ชั่วโมง ดังนั้นอายุมากกว่า 5 วันหมายถึงอย่างน้อย 6 วันเนื่องจากค่าจะถูกปัดเศษและเศษส่วนจะถูกละเว้น


ไม่คำแถลงเกี่ยวกับคำตอบของ Gilles ที่-mtime +5ขัดแย้งกัน(cross site) มันจะเป็น "มากกว่า 6 * 24 ชั่วโมง" (+1 มีผลไม่ว่าด้วยเหตุผลใด (หารและปัดเศษลง))
Peter Mortensen

@PeterMortensen ก่อนอื่นโปรดอย่าเริ่มต้นคำสั่งด้วย "ไม่" มันทำให้พวกเขาเผชิญหน้าโดยไม่จำเป็นและทำให้จุดของคุณยากขึ้น ที่กล่าวว่าฉันไม่เห็นความขัดแย้ง -mtime +5จะค้นหาไฟล์ที่ถูกแก้ไขมากกว่า 5 วันก่อนดังนั้นอย่างน้อย 6 วันที่ผ่านมา นั่นคือสิ่งที่ผมพูดและสิ่งที่กิลส์ sais และที่สำคัญกว่าสิ่ง manpage touch -d '6 days ago' file; find -mtime +5และการทดสอบอย่างง่ายจะแสดง: ครั้งต่อไปให้ทดสอบบางสิ่งแทนการโจมตี แต่ตกลงฉันได้ทำให้คำตอบชัดเจนขึ้น
terdon

1

-mtime +5ควรแสดงไฟล์ทั้งหมดที่ถูกแก้ไข 5 วันและก่อนหน้า (6, 7, ... ) ในขณะที่-5ควรจะแสดงไฟล์ที่ถูกแก้ไขวันนี้ถึง 5 วันที่ผ่านมา


ไม่คำแถลงเกี่ยวกับคำตอบของ Gilles ที่-mtime +5ขัดแย้งกัน(cross site) มันจะเป็น "การแก้ไข 6 วันและก่อนหน้า (7, 8, ... )" (+1 มีผลไม่ว่าด้วยเหตุผลใด (การหารและการปัดเศษลง))
Peter Mortensen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.