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 天前修改的文件。