我在 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
。