按时间筛选是什么
find 按时间筛选文件:修改时间以 24 小时为单位,也有精确到分钟的写法;还有用参照文件比较与用可读时间比较两种方式。要特别注意单位语义——那个 N 指的是多少个 24 小时周期,不是自然日,跨月或跨年时口径会与直觉不符。
基本信息
| 适用平台 | Linux、Unix 通用,其中可读时间比较属于 GNU 扩展 |
|---|---|
| 命令语法 | find 路径 -mtime N ;也可用分钟粒度、参照文件或可读时间 |
| 时间类型 | 修改时间、访问时间、元数据变更时间 |
| 数值语义 | 正数表示超过,负数表示在之内,0 表示不足一个周期 |
典型使用场景
- 清理超期文件:按修改时间圈出历史归档
- 找近期变动:定位最近被改过的配置文件
- 区间筛选:用两个时间条件夹出某个时间段
- 与参照文件比较:找出比某个基线更新的文件
- 结合类型与深度条件,排除正在写入的文件
常用示例
常用示例
find /logs -mtime -7 # 7 天内修改过
find /tmp -mmin +120 -delete # 超过 120 分钟
find /data -newer /etc/hosts -type f
find /var/log -newermt '2026-10-01' ! -newermt '2026-10-08' # 区间
find /backup -type f -mtime +30 -printf '%TY-%Tm-%Td %p\n' | head时间条件对照
| 条件 | 单位 | 示例含义 |
|---|---|---|
| -mtime N | 24 小时周期 | 正数表示超过 N 个周期 |
| -mtime -N | 24 小时周期 | N 个周期之内 |
| -mmin N | 分钟 | +120 表示超过两小时 |
| 按参照文件比较 | 与指定文件比较 | 比它更新 |
| 按可读时间比较 | 与给定时刻比较 | 按自然日期圈范围 |
| 元数据时间 | 24 小时周期 | 权限或属主最后变更时间 |
数值为 0 的含义是「不满一个周期」,不是「今天」;要按自然日筛选就改用可读时间的两端夹出区间。
访问时间受挂载选项影响并不可靠:启用相对访问时间或完全关闭记录后,用它做访问审计会得到错误结论。同理,备份与恢复工具可能刻意保留原时间戳,这时的筛选结果与文件内容的实际新旧并不一致。