我正在尝试删除除最新日志之外的所有过时日志。在执行脚本删除文件之前,我当然想测试我的命令以确保我得到准确的结果。
执行这些命令时,日期为:
Sep 1 00:53:44 AST 2014
目录列表:
Aug 27 23:59 testfile.2014-08-27.log
Aug 28 23:59 testfile.2014-08-28.log
Aug 29 23:59 testfile.2014-08-29.log
Aug 30 23:59 testfile.2014-08-30.log
Aug 31 23:59 testfile.2014-08-31.log
Sep 1 00:29 testfile.log
我认为 -mtime +1 应该列出一天前的所有文件。为什么没有列出 8-30.log 之一?
find . -type f -mtime +1 -name "testfile*log"
./testfile.2014-08-27.log
./testfile.2014-08-28.log
./testfile.2014-08-29.log
这是预期的效果,但这只是反复试验。这个0是什么意思?
find . -type f -mtime +0 -name "testfile*log"
./testfile.2014-08-30.log
./testfile.2014-08-27.log
./testfile.2014-08-28.log
./testfile.2014-08-29.log
原文由 user3299633 发布,翻译遵循 CC BY-SA 4.0 许可协议
find 的 POSIX 规范说:
有趣的是,
find
的描述没有进一步指定“初始化时间”。不过,这可能是find
被初始化(运行)的时间。_将 评论 的内容转移到这个答案。_
在给定时间(2014-09-01 00:53:44 -4:00,我推断 AST 是大西洋标准时间,因此与 UTC 的时区偏移量在 ISO 8601 中为 -4:00 但 + ISO 9945(POSIX)中的 4:00,但这并不重要):
所以:
即使“自纪元以来的秒数”值错误,相对值也是正确的(对于世界某处的某个时区,它们是正确的)。
因此,为 2014 年 8 月 30 日日志文件计算的
n
值恰好是1
(使用整数运算完成),而+1
拒绝它,因为它严格来说是> 1
比较(而不是>= 1
)。