首页/系统/Linux 运维命令速查/场景:检索最近变动的文件(发布核对/应急)
文件与目录76 条

场景:检索最近变动的文件(发布核对/应急)

发布后核对动过哪些文件、入侵排查找新增可疑文件,按分钟或起止时间圈范围最快。

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

按时间窗检索变动文件

按最近时间窗检索变动文件有两个典型用途:发布之后核对到底动过哪些文件,以及应急排查中找出新增或修改过的可疑文件。find 提供两条时间轴:-mmin 与 -mtime 看文件内容修改时间(mtime),-cmin 与 -ctime 看元数据变更时间(ctime,涵盖权限、属主与链接数变化)。应急场景两个维度都要看,因为攻击者常把内容写入与权限调整分两步完成。还要注意 mtime 可以被 touch 伪造,重要排查不能只看它。

基本信息

适用平台Linux/macOS(GNU findutils 与 BSD find)
命令语法find 路径 -mmin N 或 find 路径 -cmin N 或 find 路径 -newermt '时间'
常用选项-mmin 按分钟看内容修改 -cmin 按分钟看元数据变更 -mtime 与 -ctime 按天 -newermt 指定时间点之后
组合用法配合 -type f、-name、-exec ls 输出细节
时间属性mtime 内容变化、ctime 元数据变化、atime 访问时间

典型使用场景

  • 发布核对:确认本次上线实际改动了哪些文件
  • 应急排查:找出最近新增或被写入的脚本与页面
  • 权限异常:用 -cmin 定位最近被改过权限的文件
  • 配置追溯:确认哪些配置文件在指定时间后被修改
  • 备份评估:统计当天的变动量,判断是否需要提前备份

常用示例

常用示例
find /var/www/site -type f -mmin -120
find /var/www/site -type f -newermt '2026-10-13 00:00'
find /etc -cmin -60                        # 近期元数据变动的文件
find /var/www -name '*.php' -mtime -1 -exec ls -l {} +
find /tmp -type f -mmin -30 -exec ls -lh {} +

三条时间轴

属性变化时机排查用途
mtime 修改时间文件内容被写入发布核对与内容变更追溯
ctime 变更时间元数据变化,如权限、属主、重命名应急排查中权限被改动的痕迹
atime 访问时间文件被读取常被 relatime 等挂载选项弱化,参考价值有限
时间窗写法-mmin 分钟级、-mtime 天级、-newermt 指定时间点按排查粒度选择合适的选项
应急排查两个维度都要看:-mtime 找内容变化,-ctime 或 -cmin 找权限与属主被改动的文件,例如被补上可执行位的可疑脚本。
mtime 可以被 touch 任意伪造。重要排查不要只看它,应结合 ctime、内容审计与完整性校验一起判断。
需要按时间先后排序查看时,可用 GNU find 的 -printf 先打印时间戳再排序:find /data -type f -printf '%T@ %p\n' | sort -n | tail 就能拿到最近变动的几项。BSD 与 macOS 的 find 没有 -printf,改用 -exec stat 取时间。时间条件里写绝对时间最稳。

排查动作顺序

  • 先锁定业务目录,避免整机扫描拖慢线上服务
  • 用 -type f 过滤掉目录,减少噪声
  • 先只打印清单核对数量,再决定是否交给后续命令处理
  • 同时看内容修改与元数据变更两条时间轴,避免漏掉改权限的动作
  • 把命中的文件清单存成证据文件,便于复核与交接

易错点

  • 只看 -mtime 忽略 -cmin,漏掉只改了权限未改内容的可疑文件
  • 在整机上扫描 -mmin,耗时很长且结果噪声大,应先锁定业务目录
  • 把 atime 当作可靠依据,实际挂载选项常把它弱化
  • 时间窗设得过宽,输出量巨大反而看不清重点
  • 跨挂载点扫描会穿过到上级文件系统,扫描时间成倍增长还可能翻出无关数据,加 -xdev 把范围限制在同一文件系统内

数据来源与参考

  • man 1 find(GNU findutils 手册)

相关工具

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