在 UNIX 上查找在某个时间间隔内修改的文件

在 UNIX 上查找在某个时间间隔内修改的文件

我在 Linux 上工作,尝试过一段时间来弄清楚 find 命令,以便能够列出几天前 24 小时内修改的目录,但我无法让它工作。除其他外,我还尝试过:

find -type d -mtime +1 -mtime -2

但是它返回 0 个匹配项,而find -type d -mtime +1给出 16721 个匹配项,并find -type d -mtime -2给出 120 个匹配项。我应该得到大约 50-60 个匹配项。

我也尝试过中间-a的选项AND,但没有什么区别。

答案1

find 选项的参数-mtime有点违反直觉。基本上,你在这里要求的是“显示两天前和两天前的所有数据”……“+”选项有点奇怪(来自find(1)):

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

对于单日范围,您只需使用-mtime 2,否则我建议您使用-mmin和一些 shell 算术来到达您想要去的地方。

答案2

我会使用一个脚本:

STARTTIMEFILE=`mktemp` || exit 1
touch -d '2009-10-01 00:00' "$STARTTIMEFILE" || exit 1

ENDTIMEFILE=`mktemp` || exit 1
touch -d '2009-11-01 00:00' "$ENDTIMEFILE" || exit 1

find . -newer "$STARTTIMEFILE" -and -not -newer "$ENDTIMEFILE" -ls

rm -f "$STARTTIMEFILE" "$ENDTIMEFILE"

比 更容易理解-mtime

相关内容