linux中find命令查找特定时间段修改的文件,应优先使用-mmin(分钟级精度)或-newermt(指定日期时间),避免-mtime因向下取整导致的时间误判。

Linux 中用 find 查找修改时间在特定时间段的文件,核心是使用 -mtime、-mmin 或结合 -newermt 等时间相关选项。关键是理解时间单位(天 vs 分钟)、时间计算逻辑(向下取整),以及如何表达“最近 N 小时”或“某两天之间”这类常见需求。
用 -mtime 按天查找(适合粗略范围)
-mtime 以「24 小时为单位」计算,且数值是向下取整后的整数天数,容易误判。例如 -mtime -1 表示「不到 1 天(即 0 天)」,也就是过去 24 小时内修改过的文件。
-
find /path -mtime -1:过去 24 小时内修改的文件 -
find /path -mtime 1:恰好在 24~48 小时前修改的文件(即第 2 个 24 小时段) -
find /path -mtime +1:48 小时以前修改的文件
注意:-mtime 0 和 -mtime -1 效果相同,都表示「今天修改过」;但 -mtime -2 表示「不到 2 天(即 0~48 小时)」,覆盖范围比直觉更宽。
用 -mmin 按分钟查找(精确到分钟)
如果需要小时级甚至分钟级精度,-mmin 更可靠,它直接按「分钟」计算,不取整:
-
find /path -mmin -60:过去 60 分钟内修改的文件 -
find /path -mmin +120:120 分钟(2 小时)以前修改的文件 -
find /path -mmin +30 -mmin -120:30~120 分钟前修改的文件(注意顺序无关,find 自动 AND)
用 -newermt 按具体日期/时间查找(最灵活)
要查「某年某月某日某时」之间的文件,-newermt 是最直观的方式,支持完整时间字符串:
-
find /path -newermt "2024-05-01" ! -newermt "2024-05-03":2024-05-01 零点起,到 2024-05-03 零点前(即 5 月 1 日和 2 日全天) -
find /path -newermt "2024-05-01 14:30" -not -newermt "2024-05-01 16:00":5 月 1 日 14:30 到 16:00 之间修改的文件 - 时间格式支持
YYYY-MM-DD、YYYY-MM-DD HH:MM、YYYY-MM-DD HH:MM:SS,也接受相对写法如"1 hour ago"
组合条件与常用技巧
实际使用中常需排除目录、限制深度或配合其他操作:
- 只查普通文件:
find /path -type f -newermt "2024-05-01" - 限制查找深度(比如只查当前目录下,不进子目录):
find /path -maxdepth 1 -mmin -30 - 查完后直接查看详情:
find /path -newermt "2024-05-01" -ls - 查完后执行命令(如备份):
find /path -mmin -10 -exec cp {} /backup/ \;
不复杂但容易忽略时间取整和边界逻辑,建议优先用 -mmin 或 -newermt 替代 -mtime 处理精确需求。











