我正在尝试删除除最近之外的所有日期日志.在我执行脚本删除文件之前,我当然想测试我的命令,以确保我提供准确的结果.
执行这些命令时,日期为:
Sep 1 00:53:44 AST 2014
Run Code Online (Sandbox Code Playgroud)
目录列表:
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
Run Code Online (Sandbox Code Playgroud)
我认为-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
Run Code Online (Sandbox Code Playgroud)
这是期望的效果,但它只是反复试验.这是什么意思啊?
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
Run Code Online (Sandbox Code Playgroud)
Jon*_*ler 36
用于查找的POSIX规范说:
-mtimen如果从初始化时间中减去的文件修改时间除以86400(丢弃任何余数),则主要应评估为真n.
有趣的是,描述find并未进一步指定"初始化时间".但是,可能find是初始化(运行)的时间.
在描述中,无论何处
n用作主要参数,它都应被解释为十进制整数,可选地前面加上加号('+')或减号(' - ')符号,如下所示:
+n超过n.
n没错n.
-n不到n.
在给定时间(2014-09-01 00:53:44 -4:00,我推断AST是大西洋标准时间,因此在ISO 8601中,UTC的时区偏差为-4:00但是+ ISO 9945(POSIX)中的4:00,但这并不重要):
1409547224 = 2014-09-01 00:53:44 -04:00
1409457540 = 2014-08-30 23:59:00 -04:00
Run Code Online (Sandbox Code Playgroud)
所以:
1409547224 - 1409457540 = 89684
89684 / 86400 = 1
Run Code Online (Sandbox Code Playgroud)
即使"自纪元以来的秒数"值错误,相对值也是正确的(对于世界某处的某个时区,它们是正确的).
因此n,为2014-08-30日志文件计算的值正是1(计算是使用整数运算完成的),并且+1拒绝它,因为它严格地是> 1比较(而不是>= 1).
要查找过去 24 小时内修改的所有文件,请使用以下文件。这里的 -1 表示在 1 天或更短时间内更改。
find . -mtime -1 -ls
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85235 次 |
| 最近记录: |