使用 find 的 -newer 选项可查找比指定参考文件修改时间更晚的文件,语法为 find /path -newer reference_file;需确保参考文件存在且可读,配合 -type f 可限制只匹配普通文件,-newermt 则支持直接指定时间点。

用 find 查找比某个参考文件更新(即修改时间更晚)的文件,核心是使用 -newer 测试条件。
基本语法:-newer 参考文件
find 的 -newer 选项会比较目标文件的 mtime(修改时间) 是否比指定参考文件的 mtime 更新(即时间戳更晚)。只要目标文件的修改时间在参考文件之后,就匹配。
- 命令格式:
find /path/to/search -newer reference_file - 例如:查找
/home/user/docs下所有比/tmp/last_backup更新的文件:find /home/user/docs -newer /tmp/last_backup - 注意:
reference_file必须存在,且可读(否则报错或无结果)
排除目录,只查普通文件
默认 find 会匹配所有类型(包括目录),若只想找新文件(不包括目录),加 -type f:
find /var/log -type f -newer /etc/timestamp.marker- 这样只列出比
/etc/timestamp.marker修改时间更晚的普通文件
配合其他条件灵活使用
可以组合常用选项增强实用性:
- 忽略大小写、限制深度:
find . -maxdepth 2 -type f -iname "*.log" -newer /tmp/start_time - 按时间范围反向控制:想找“比参考文件新但不超过 7 天”的文件,可用
-newermt(需 GNU find):find . -type f -newer /tmp/ref -not -newermt "$(date -d '7 days ago' '+%Y-%m-%d %H:%M:%S')" - 输出详细信息:
find ... -newer ref -ls或-printf "%T@ %p\n" | sort -n查看时间戳排序
替代方案:用 -newermt(更精确控制时间点)
如果参考时间不是来自文件,而是某个具体时间点(如 "2024-05-01 10:00"),推荐用 GNU find 的 -newermt:
find . -type f -newermt "2024-05-01 10:00:00"- 它直接解析时间字符串,避免创建临时参考文件
- 注意:该选项非 POSIX 标准,macOS 默认
find不支持(需安装gnu-findutils)











