stat 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于文件与目录命令族(见文件与目录命令族)。想知道一个文件的"全部家底",
ls -l不够看,得上它。
stat 打印文件的完整元数据:大小、权限、所有者、inode 号、以及三个时间戳(访问/修改/变更)。排查权限、时间戳、inode 相关问题,它是第一手资料。
一、基本用法
bash
stat file.txt
stat /var/log输出里几个关键字段:
Size:字节大小Access/Modify/Change:三个时间(见下方解释)Inode:索引节点号(文件系统里文件的身份证)Links:硬链接数Uid/Gid:所有者与属组
二、三个时间戳的区别(常考)
bash
# Access (atime):最后一次读
# Modify (mtime):内容最后一次改(ls -l 默认显示这个)
# Change (ctime):元数据最后一次变(如改权限、改名)——注意不是"创建时间"这是面试常客:
ctime是"变更时间"不是"创建时间"(Linux 没有原生创建时间字段,较新文件系统有Birth即 crtime)。mtime改内容、ctime改属性、两者独立。
三、自定义输出:-c
bash
stat -c '%s' file # 只取大小(字节)
stat -c '%Y' file # 只取 mtime(Unix 秒)
stat -c '%n %a %U' file # 文件名 权限(数字) 所有者
-c(format)用%占位符精确取字段,写脚本提取信息极方便。%Y是 mtime 的 Unix 时间戳,常用来做"文件是否比某时刻新"的判断。
四、文件系统级信息:-f
bash
stat -f / # 看文件系统信息(类型、块大小、可用块)
-f(file system)把视角从"文件"切到"它所在的文件系统",显示块大小、总/可用空间等,类似 df 但更底层。
相关命令
一句话总结
stat = 文件完整元数据:比 ls -l 全,含 Size/权限/所有者/inode/硬链接数;三个时间要分清——atime 读、mtime 改内容(ls 默认显示)、ctime 改元数据(非创建时间);-c '%s'/'%Y' 脚本取大小/时间戳;-f 看文件系统级信息。