我正试图删除所有的日志除了最近的。在我执行脚本删除文件之前,我当然想测试我的命令,以确保我带来了准确的结果。
执行这些命令时,日期为:
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
4条答案
按热度按时间edqdpe6u1#
find的POSIX规范说:
-mtime
*n
* 如果从初始化时间中减去文件修改时间,除以86400(丢弃任何余数)为 *n
*,则主要应评估为真。有趣的是,
find
的描述没有进一步指定“初始化时间”。不过,这可能是初始化(运行)find
的时间。在本说明书中,无论 *
n
* 在何处被用作主参数,它都应被解释为十进制整数,可选地前面有加号(“+”)或减号(“-”)符号,如下所示:+n
* 大于 *n
*。n
* 准确地 *n
*。-n
* 小于 *n
*。将评论的内容转移到此答案。*
你可以写
-mtime 6
或-mtime -6
或-mtime +6
:6
表示“等于6天前-因此在'now - 6 * 86400'和'now - 7 * 86400'之间修改”(因为小数天被丢弃)。-6
表示“小于6天-因此在'now - 6 * 86400'或之后修改”。+6
意味着“超过6天-所以在'now - 7 * 86400'或之前修改”(其中7可能有点出乎意料)。在给定的时间(2014-09-01 00:53:44 -4:00,我推断AST是大西洋标准时间,因此ISO 8601中的时区偏移是-4:00,但ISO 9945(POSIX)中的时区偏移是+4:00,但这并不重要):
所以:
即使“自纪元以来的秒数”值是错误的,相对值也是正确的(对于世界上某个地方的某个时区,它们是正确的)。
因此,为2014-08-30日志文件计算的 *
n
* 值正好是1
(计算是用整数算术完成的),+1
拒绝它,因为它严格地是> 1
比较(而不是>= 1
)。0s7z1bwu2#
+1表示2天前。是圆的。
sycxhyv73#
要查找最近24小时内修改的所有文件,请使用下面的文件。这里的-1表示在1天或更短时间内更改。
z0qdvdin4#