当前位置: 首页 > 面试题库 >

解释'find -mtime'命令

卜方伟
2023-03-14
问题内容

我正在尝试删除除最近的日志以外的所有日期日志。在执行脚本删除文件之前,我当然想测试命令以确保获得正确的结果。

执行这些命令时,日期为:

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

问题答案:

find的POSIX规范说:

-mtime n 如果从初始化时间中减去的文件修改时间除以86400(任何剩余部分均被舍弃),则主数据库应评估为true 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

所以:

1409547224 - 1409457540 = 89684
89684 / 86400 = 1

即使“自纪元以来的秒数”值错误,相对值也是正确的(对于世界上某个时区,它们是正确的)。

因此 n ,为2014-08-30日志文件计算的值是准确的1(该计算是使用整数算术完成的),而+1拒绝该值是因为它严格来说是一个> 1比较(而不是>= 1)。



 类似资料:
  • make 命令本身可带有四种参数:标志、宏定义、描述文件名和目标文件名。其标准 形式为: make [flags] [macro definitions] [targets] Unix 系统下标志位 flags 选项及其含义为: -f file 指定 file 文件为描述文件,如果 file 参数为"-"符,那么描述文件指向标 准输入。如果没有"-f"参数,则系统将默认当前目录下名为 makef

  • 本文向大家介绍Linux 内存释放命令详解,包括了Linux 内存释放命令详解的使用技巧和注意事项,需要的朋友参考一下 我使用的是CentOS 6.5 ,由于卸载Solr 后发现内存占用挺多的,我想释放一下内存,就查阅了一些资料,分享给大家: 1.free -m 查看内存的使用情况,-m表示单位是兆 2.echo 1 > /proc/sys/vm/drop_caches 以上内容比较简单,成功的给

  • 假设我们有一个类窗口,上面的命令是在子类的方法中编写的。我需要一些帮助来理解(窗口)这到底是做什么的。它所指的地方。

  • 本文向大家介绍Docker 命令教程(附中文解释),包括了Docker 命令教程(附中文解释)的使用技巧和注意事项,需要的朋友参考一下 Docker 命令教程 Docker自从诞生以来就一直备受追捧,学习Docker是一件很炫酷、很有意思的事情。我希望通过这篇文章能够让大家快速地入门Docker,并有一些学习成果来激发自己的学习兴趣。我也只是一个在Docker这条巨鲸上玩耍的小孩,全文如有不明确、

  • 本文向大家介绍linux下的tar命令详细解释,包括了linux下的tar命令详细解释的使用技巧和注意事项,需要的朋友参考一下 tar命令 [root@Linux ~]# tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的

  • 问题内容: 当我将字符串值1和7存储到“ mykey”中时, redis中到底存储了 什么?以及getbit在redis中如何工作? 有人试图在该值内循环位吗? 我知道bitcount会给我2,但我也想从中获得确切的字符串值1和7,这可能吗? -- 我通过使用erlang redis客户端读取输出进行了一些实验。 erlang输出: 然后删除此条目: 我做同样的事情来偏移2 4 8,在这里您可以看