不能直接用 -cmin -60 查“新型文件”,因其查找的是元数据变更(如权限、所有者)而非新建文件;应使用 -newermt 配合 date 动态生成时间点,或老系统用 touch + -newer 临时文件。

不能直接用 -cmin -60 找“新型文件”——这个命令实际查找的是“状态(status)变更时间在 60 分钟内的文件”,包括权限、所有者、扩展属性等元数据变动,但不表示文件是新创建的,也不保证内容被修改过(内容修改对应的是 -mmin)。更关键的是:它不会过滤“新型文件”(即过去一小时新建的文件)。
区分三个关键时间戳
Linux 文件有三个独立时间戳:
-
mtime(modification time):文件内容最后一次被修改的时间 → 用
-mmin查 -
ctime(change time):文件元数据(权限、所有者、链接数、ACL 等)最后一次变更的时间 → 用
-cmin查 -
atime(access time):文件最后一次被读取的时间 → 用
-amin查
新建文件时,三者通常同时更新,所以 -cmin -60 会包含大部分一小时内新建的文件,但也包含大量非新建却改了权限的旧文件(比如你刚执行了 chmod 或 chown)。
想查“过去一小时新建的文件”,该用 -newermt
最准确的方式是使用 -newermt(支持精确到秒的时间字符串):
find /path/to/search -type f -newermt "$(date -d '60 minutes ago' '+%Y-%m-%d %H:%M:%S')"
说明:
-
/path/to/search替换为你想搜索的目录(如/tmp或/var/log) -
-type f限定只找普通文件(排除目录、设备文件等) -
$(date -d '60 minutes ago' ...)动态生成一小时前的时间点,避免手动计算
注意:-newermt 在 GNU find(主流 Linux 发行版默认)中可用;若系统较老(如 CentOS 6),可改用 -newer 配合临时参考文件:
touch -d '60 minutes ago' /tmp/ref_time find /path/to/search -type f -newer /tmp/ref_time rm /tmp/ref_time
如果真要查“权限或内容变动”,需组合条件
仅用 -cmin -60 会混入大量无关结果。更实用的做法是:
- 查内容被改且是最近一小时:用
-mmin -60 - 查权限被改且是最近一小时:用
-cmin -60 ! -mmin -60(排除内容也改过的,聚焦纯权限变更) - 查新建 + 权限/内容任一变动:其实新建即满足,无需额外判断 —— 所以还是回归
-newermt
例如,监控敏感目录下异常权限变更(可能是攻击痕迹):
find /etc -type f -cmin -60 ! -mmin -60 -ls
这会列出过去一小时里权限/所有者被修改、但内容未变的配置文件。
补充建议:避免漏掉隐藏文件和权限不足目录
默认 find 遇到无权限目录会报错并跳过。若需尽可能覆盖,加 2>/dev/null 屏蔽错误,或提前用 sudo 运行:
- 普通用户:加
2>/dev/null忽略“Permission denied” - 审计场景:用
sudo find ...确保遍历系统关键路径 - 排除临时/缓存目录(如
/proc,/sys,/dev)可提速:-path '/proc' -prune -o -path '/sys' -prune -o ...











