首页/系统/Linux 运维命令速查/find 按时间筛选(-mtime/-mmin/-newer)
文件与目录76 条

find 按时间筛选(-mtime/-mmin/-newer)

按修改时间筛选文件,-mtime 以天为单位(24 小时周期),-mmin 精确到分钟;-newer 用参照文件比较。

Linux 运维命令速查系统更新于 2026-10-13

按时间筛选是什么

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 N24 小时周期正数表示超过 N 个周期
-mtime -N24 小时周期N 个周期之内
-mmin N分钟+120 表示超过两小时
按参照文件比较与指定文件比较比它更新
按可读时间比较与给定时刻比较按自然日期圈范围
元数据时间24 小时周期权限或属主最后变更时间
数值为 0 的含义是「不满一个周期」,不是「今天」;要按自然日筛选就改用可读时间的两端夹出区间。
访问时间受挂载选项影响并不可靠:启用相对访问时间或完全关闭记录后,用它做访问审计会得到错误结论。同理,备份与恢复工具可能刻意保留原时间戳,这时的筛选结果与文件内容的实际新旧并不一致。

易错点

  • 把 24 小时周期当成自然日,跨月场景下圈出的范围与预期不符
  • 数值 0 被误读为「今天」,实际含义是不到一整天
  • 依赖访问时间做审计,结果受挂载参数影响而不准确
  • 只用单个时间条件,边界模糊;精确区间要用两个条件夹住
  • 与删除动作组合时不先预览,容易连带删掉不该动的文件

数据来源与参考

  • man 1 find(GNU findutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌