当前位置:首页>Linux>Linux按时间段查找文件全方案:从基础到实战,运维必备

Linux按时间段查找文件全方案:从基础到实战,运维必备

  • 2026-09-03 17:34:00
Linux按时间段查找文件全方案:从基础到实战,运维必备

在我们日常的linux运维中,日志排查、文件清理中按时间段精准定位文件是高频刚需。无论是找近1小时修改的日志、3天内新增的配置,还是指定日期区间的业务文件,掌握find命令的时间筛选逻辑,就能告别盲目翻找,高效定位目标文件。

这篇文章我从时间概念、基础命令、精确时间段、组合筛选、实战脚本、避坑要点全维度拆解,新人也能直接复制使用。

一、linux文件的3个时间戳概念
linux文件没有严格意义的创建时间(少部分文件系统支持),核心用3个时间维度区分文件状态,这是按时间查找的基础:
参数
全称
含义
适用场景
mtime
modify time
文件内容修改时间
找新增 / 编辑过的文件(最常用)
atime
access time
文件访问时间
找被读取 / 打开过的文件
ctime
change time
文件状态修改时间
找权限、属主、文件名变更的文件
日常我们排查优先用mtime,只有特殊场景才用到atime/ctime,避免混淆导致找错文件。
二、基础用法:按 “天 / 分钟” 快速筛选(相对时间)

find命令通过时间参数结合符号实现相对时间查找,单位分天(time)和分钟(min),符号规则:

  • -n:n时间内(如-7=7天内、-60=60分钟内)
  • +n:n时间前(如+30=30天前、+120=120分钟前)
  • n:恰好n时间(如7=刚好7天前)
1. 按天筛选(mtime/atime/ctime)
#1.查找/var/log下7天内修改的所有文件find /var/log -type f -mtime -7#2.查找/home下30天前访问的文件find /home -type f -atime +30#3.查找/etc下大于1天前状态变更的文件(实际为 ≥24h并且<48h)find /etc -type f -ctime +1
2. 按分钟筛选(mmin/amin/cmin)
适合短时间内(如1小时、半小时)的文件定位:
#1.查找当前目录下1小时内修改的文件find . -type f -mmin -60#2.查找/opt下2小时前未访问的文件find /opt -type f -amin +120#3.查找/data/ceshi下30分钟内状态改变的文件find /data/ceshi -type f -cmin -30
技巧:-type f只查文件,排除目录,结果更清爽。
三、进阶用法:精确到具体时间段(绝对时间)
相对时间只能查 “最近N天/分钟”,若要找指定日期、指定小时分钟的文件,用-newermt参数,也是我们日常使用最多的。
1. 核心语法
find 路径 -type f -newermt "起始时间" ! -newermt "结束时间"
  • !表示非,即 “早于结束时间”
  • 时间格式:YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS
2. 实战案例
#1.查找2026-08-07当天修改的文件find /data -type f -newermt "2026-08-07" ! -newermt "2026-08-08"#2.查找2026-08-07 09:00 至 2026-08-07 21:00的日志文件find /var/log/nginx -type f -newermt "2026-08-07 09:00" ! -newermt "2026-08-07 21:00"#3.查找今天10:00-21:00新增的文件find . -type f -newermt "10:00" ! -newermt "21:00"
3. 时间区间叠加(10-30天前修改的文件)
find /data/backup -type f -mtime +10 -mtime -30
四、高效组合:时间和文件名或大小权限筛选
实际场景中,很少单独按时间查找,叠加筛选条件能精准锁定目标:
#1.查找/var/log下7天内、大于1M的.log日志find /var/log -type f -name "*.log" -mtime -7 -size +1M#2.查找/data/config_bak下10天内、属主为root的.conf配置文件find /data/config_bak/ -type f -name "*.conf" -mtime -10 -user root#3.查找/tmp下1小时内、权限为644的临时文件find /data -type f -mmin -60 -perm 644
五、生产实战
1. 导出查找结果到文件
#导出7天内修改的日志路径到log_list.txtfind /var/log -type f -mtime -7 > /root/log_list.txt
2. 批量删除旧文件(先查后删,安全第一)
#第一步:先查看30天前的.log文件(确认无误再删)find /var/log -type f -name "*.log" -mtime +30#第二步:执行删除find /var/log -type f -name "*.log" -mtime +30 -delete
注意:删除前务必先不加-delete执行预览,避免误删!
3. 统计指定时间段文件数量
#统计2026-08-07当天修改的文件数find /data/ceshi  -type f -newermt "2026-08-07" ! -newermt "2026-08-08" |wc -l
六、注意事项
  • 时间单位混淆:mtime是天,mmin是分钟,别用mtime -60找1小时内文件!
  • 符号搞反:-7是7天内,+7是7天前,搞反会查空结果。
  • atime 不准:部分系统默认禁用 atime 更新(提升性能),按访问时间查找可能失效。
  • 跨文件系统查找:加-xdev参数,避免挂载盘(如U盘、NAS)被遍历,提速又安全。
find / -xdev -type f -mtime -7
-newermt兼容性:主流 Linux(centos7+/ubuntu16+)都支持,老系统用-newer结合时间文件替代。

七、总结

find命令是linux文件查找的 “瑞士军刀”,按时间段查找的核心就是分清时间戳、记准参数符号、用好-newermt。无论是日常日志排查、定期文件清理,还是应急故障定位,掌握这套方案,就能快速定位目标文件,提升运维效率。还有一种是转换成时间戳进行查询的命令,后期在详细介绍。

如果你觉得文章对你的运维工作有帮助,记得点赞加关注。
#运维#linux运维#linux实战#linux文件查找#mtime#newermt

最新文章

随机文章