“find -mtime”无法返回“ls -l”显示的结果

“find -mtime”无法返回“ls -l”显示的结果

在 Red Hat Linux 系统上,我有一个包含数百个文件的目录。我想删除所有超过 24 小时的文件。我使用 执行了删除操作find . -type f -mtime +1 -delete。很简单,对吧?然后,在检查结果时,我发现ls -l报告目录中超过 24 小时的文件。请记下下面的日期以及最后一次查找的结果:

> date
Sun Jan  5 19:02:43 PST 2014
> find . -type f -mtime +1 | wc -l
0
> find . -type f | xargs /bin/ls -l | grep 'Jan  3' | wc -l
70

奇怪的是,没有超过 48 小时的文件。(之前肯定有。)然而,此时,我真的被难住了。我可能忽略了一些显而易见的东西,但是什么呢?有人能告诉我吗?

答案1

对于find,“+1”表示大于 1。此外,当计算天数的年龄时,它会向下舍入到最接近的整数。

此行为记录在手册页中:

当 find 确定文件上次访问是在多少个 24 小时前时,任何小数部分都会被忽略,因此为了匹配 -atime +1,文件必须至少在两天前被访问过。

在您的示例中,这两个整天意味着它应该只找到早于 1 月的文件 319:02:43。1 月 3 日之后创建的任何文件都无法找到。

因此,当您写道“奇怪的是,没有超过 48 小时的文件”时,这意味着它的find行为完全符合记录,无论它有多么不正常。

相关内容