我试图删除除最近的所有date日志。 在我执行一个脚本来删除这些文件之前,我想要testing我的命令以确保我能够提供准确的结果。
执行这些命令时,date是:
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
查找的POSIX规范说:
-mtime
n
如果从初始化时间减去文件修改时间除以86400(除去任何剩余的部分),则主要评估为真。
有趣的是, find
的描述没有进一步指定“初始化时间”。 这可能是,当find
被初始化(运行)的时候。
在描述中,无论
n
用作主参数,它都应该被解释为一个十进制整数,可选地在前面加上('+')或减号(' – ')符号,如下所示:
+n
多于n
。
n
正好n
。
-n
小于n
。
在给定的时间(2014-09-01 00:53:44 -4:00,我推测AST是大西洋标准时间,因此与ISO 8601相比UTC的时区偏移是-4:00,但是+ 4:00在ISO 9945(POSIX)中,但没关系):
1409547224 = 2014-09-01 00:53:44 -04:00 1409457540 = 2014-08-30 23:59:00 -04:00
所以:
1409547224 - 1409457540 = 89684 89684 / 86400 = 1
即使“时代以来的秒数”值是错误的,相对值也是正确的(对于世界上某个时区的某个时区,它们是正确的)。
因此,为2014-08-30日志文件计算的n
值恰好为1
(使用整数算术进行计算),并且+1
由于严格地> 1
比较(而不是>= 1
)而被拒绝。
+1表示2天前。 它是圆的。