使用 mtime - 和 + 查找差异

使用 mtime - 和 + 查找差异

mtime's-和switches有什么区别+,因为它们都没有返回我需要的结果?

我希望删除所有超过 5 天的文件:

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

我已将输出更改为ls比较结果。

答案1

来自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将找到上次修改的文件更多的超过 524 小时前,-mtime -5将找到这些文件的最后修改时间较少的超过 524 小时前。要删除 5 天1以前的文件,请执行以下操作:

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

如果这没有返回您想要的结果,则时间戳可能有问题。是否正确报告了相关文件?如果这是外部 USB 驱动器,则文件可能是在另一台机器上创建的,并且时间戳与您预期的不同。


1注意,这里的单位是一天,24 小时。因此,超过 5 天意味着至少 6 天,因为该值始终是四舍五入的,并且小数部分被忽略。

答案2

-mtime +5应该显示 5 天及之前(6、7、...)修改的所有文件,同时-5应该显示今天至 5 天前修改的文件。

相关内容