-mtime -1 表示修改时间距现在严格小于 1 天(即不足 24 小时),因 find 按 24 小时整倍数向下取整计算,将当前时刻回溯 24 小时作为分界点,只匹配该分界点之后修改的文件。

用 find 按绝对修改时间(mtime)筛选最近 24 小时内变动的文件,核心是用 -mtime -1,但要注意它实际表示「不到 24 小时」,且基于「24 小时整倍数」向下取整的计算逻辑,不是精确到秒的实时窗口。
为什么 -mtime -1 表示最近 24 小时
find 的 -mtime n 判断的是「文件修改时间距现在是否严格大于 n 天,且小于等于 n+1 天」;-mtime -1 即「修改时间距现在
-
find /path -mtime -1—— 查找指定路径下所有 24 小时内修改过的普通文件 - 默认包含子目录,如只需当前目录加
-maxdepth 1 - 若只想要文件(排除目录),加
-type f
需要精确到秒?用 -newermt(GNU find 推荐)
如果必须严格限定为「从现在起倒推 24 小时整(比如 2024-04-05 10:30:00 之前修改的不算)」,-mtime 不够精确。可用 GNU find 的 -newermt:
find /path -type f -newermt "$(date -d '24 hours ago' '+%Y-%m-%d %H:%M:%S')"-
date -d '24 hours ago'动态生成时间点,避免手动计算 - 注意:macOS 自带 find 不支持
-newermt,需用brew install findutils后调用gfind
常见误区提醒
-mmin -60 看似直观(分钟级),但它依赖系统是否支持(部分旧版 find 不识别),且仍按整数分钟向下取整;-mtime 0 表示「今天修改的文件」,但可能漏掉昨天 23:59 修改、今天 00:01 运行命令时已超 24 小时的文件;-newer file 需先创建参考文件,不如 -newermt 直接。
- 优先用
-mtime -1,简洁兼容性好 - 要秒级精度或跨平台脚本,用
-newermt+date组合 - 测试时加
-ls或-print确认结果,避免误删
实用一行示例
查找家目录下过去 24 小时修改过的文本文件:
find ~/ -type f -name "*.txt" -mtime -1 -print











