在 Linux 中,find 命令的 -ctime 参数用于根据文件的状态最后更改时间(Change Time)来查找文件。
核心概念澄清
- ctime (Change Time):指文件的元数据最后被修改的时间。
- 修改文件权限 (
chmod)、修改所有者 (chown)、重命名文件或移动文件时,ctime 会更新。 - 注意:修改文件内容(如用
echo或vi编辑)通常不会改变 ctime,除非同时改变了元数据(如权限)。
- 修改文件权限 (
- 对比其他时间参数:
-mtime:根据最后修改时间(Modify Time)查找。-atime:根据最后访问时间(Access Time)查找。
基本语法
find [路径] -ctime [天数]
常用用法示例
查找 24 小时内状态被更改过的文件
find /var/log -ctime 0
0表示“今天内”(即过去 24 小时内)。
查找 1 天前到 2 天前之间状态被更改过的文件
find /home -ctime 1
1表示“1 天前”,即大于 24 小时且小于 48 小时。
查找超过 7 天状态被更改过的文件
find /tmp -ctime +7
+7表示“超过 7 天”,即大于 7×24 小时。
查找最近 3 天内状态被更改过的文件
find /etc -ctime -3
-3表示“少于 3 天”,即小于 3×24 小时。
查找恰好 5 天前状态被更改过的文件
find /var -ctime 5
5表示“第 5 天”,即大于 5×24 小时且小于 6×24 小时。
常见误区与注意事项
| 参数 | 含义 | 适用场景 |
|---|---|---|
-ctime |
元数据更改时间 | 查找权限、所有者、文件名变更的文件 |
-mtime |
内容修改时间 | 查找最近编辑过的文件内容 |
-atime |
最后访问时间 | 查找最近被读取过的文件 |
💡 提示:大多数用户实际想要的是
-mtime修改时间),而不是-ctime(元数据更改时间),如果你是想找“最近编辑过的文件”,请使用-mtime。
实际应用场景
场景 1:清理临时文件
查找并删除 30 天前状态未更改的临时文件:
find /tmp -type f -ctime +30 -delete
场景 2:审计权限变更
查找最近 24 小时内权限或所有者被修改的文件:
find /etc -type f -ctime 0 -ls
场景 3:结合其他条件
查找 /var/log 下最近 7 天内状态被更改且大小超过 1MB 的日志文件:
find /var/log -type f -ctime -7 -size +1M
如何查看文件的 ctime?
你可以使用 stat 命令查看文件的详细时间信息:
stat /path/to/file
输出示例:
File: /path/to/file
Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 123456 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/user) Gid: ( 1000/user)
Access: 2026-01-01 10:00:00.000000000 +0800 ← atime
Modify: 2026-01-01 10:00:00.000000000 +0800 ← mtime
Change: 2026-01-01 10:00:00.000000000 +0800 ← ctime
Birth: -
Change 行对应的就是 ctime。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/482141.html



