命令简介
stat是Linux中用于查看文件或文件系统的详细状态信息的强大命令。它比ls -l更全面,其输出信息包括但不限于:文件大小、权限、所有者、最后访问/修改/状态变更时间、inode号、所在设备信息等。
用法
stat命令的语法格式如下
stat [选项] 文件/目录/符号链接 #选项可选
stat命令的常用选项及说明如下
-L,--dereference:支持符号连接 -f,--file-system:显示文件系统状态而非文件状态 -t,--terse:以简洁方式输出信息 -c,--format=FORMAT:自定义输出格式(支持格式符) --help:显示指令的帮助信息 --version:显示指令的版本信息
命令案例场景
1.默认输出:查看文件完整状态(无选项)
[root@blog ~]# stat anaconda-ks.cfg 文件:anaconda-ks.cfg 大小:1505 块:8 IO 块:4096 普通文件 设备:fd00h/64768d Inode:67478510 硬链接:1 权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root) 环境:system_u:object_r:admin_home_t:s0 最近访问:2025-05-29 21:30:49.502452114 +0800 最近更改:2025-05-29 21:30:49.622455612 +0800 最近改动:2025-05-29 21:30:49.622455612 +0800 创建时间:2025-05-29 21:30:49.502452114 +0800
2.查看多个文件信息
[root@blog ~]# stat anaconda-ks.cfg /etc/yum.repos.d/redhat.repo #可以同时接受多个参数,并依次显示每个文件的信息。 文件:anaconda-ks.cfg 大小:1505 块:8 IO 块:4096 普通文件 设备:fd00h/64768d Inode:67478510 硬链接:1 权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root) 环境:system_u:object_r:admin_home_t:s0 最近访问:2025-05-29 21:30:49.502452114 +0800 最近更改:2025-05-29 21:30:49.622455612 +0800 最近改动:2025-05-29 21:30:49.622455612 +0800 创建时间:2025-05-29 21:30:49.502452114 +0800 文件:/etc/yum.repos.d/redhat.repo 大小:358 块:8 IO 块:4096 普通文件 设备:fd00h/64768d Inode:69108248 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:system_u:object_r:system_conf_t:s0 最近访问:2025-05-30 11:50:13.236899775 +0800 最近更改:2025-05-30 11:50:13.235899733 +0800 最近改动:2025-05-30 11:50:13.235899733 +0800 创建时间:2025-05-30 11:50:13.235899733 +0800
3.查看文件系统状态(而非单个文件)
[root@blog ~]# stat -f /home #使用-f选项来显示文件所在文件系统的状态,而不是文件本身的状态。 文件:"/home" ID:fd0000000000 文件名长度:255 类型:xfs 块大小:4096 基本块大小:4096 块:总计:10469376 空闲:9259897 可用:9259897 Inodes: 总计:20971520 空闲:20838518 #输出将包含文件系统的信息,如类型(Type)、块大小(Block size)、总块数(Total blocks)、空闲块数(Free blocks)等。这对于快速检查磁盘使用情况很有用。
4.简洁输出
[root@blog ~]# stat -t anaconda-ks.cfg anaconda-ks.cfg 1505 8 8180 0 0 fd00 67478510 1 0 0 1748525449 1748525449 1748525449 1748525449 4096 system_u:object_r:admin_home_t:s0 #按固定顺序输出字段,便于脚本解析
5.自定义格式输出
使用--printf或-c选项可以自定义输出的格式和内容。 格式符示例: %n: 文件名 %s: 文件大小(字节) %U: 所有者用户名 %G: 所属组名 %i: inode 编号 %A: 权限(符号格式,如 -rw-r--r--) %a: 权限(八进制数字格式,如 644) %x,%y,%z,%w: 分别表示访问时间(atime),修改时间(mtime),状态变更时间(ctime),创建时间 (btime) %F: 文件类型(如 “普通文件(regular file)”, “目录(directory)”) 应用案例: #1)只显示文件名和大小: [root@blog ~]# stat -c "File: %n Size: %s bytes" anaconda-ks.cfg File: anaconda-ks.cfg Size: 1505 bytes #2)只显示inode编号(常用于调试硬链接): [root@blog ~]# stat -c %i anaconda-ks.cfg 67478510 #3)以更易读的格式显示修改时间: [root@blog ~]# stat -c "这个文件最后修改时间是:%y" anaconda-ks.cfg 这个文件最后修改时间是:2025-05-29 21:30:49.622455612 +0800 #4)批量查看多个文件的权限和所有者: [root@blog ~]# stat -c "%A %U %G %n" *.cfg #这条命令会列出当前目录下所有.cfg文件的权限、所有者、所属组和文件名 -rw------- root root anaconda-ks.cfg
6.跟踪符号链接(默认解引用)
默认情况下,stat会跟踪符号链接并显示其指向的目标文件的信息。 [root@blog ~]# stat /var/mail 文件:/var/mail -> spool/mail 大小:10 块:0 IO 块:4096 符号链接 设备:fd00h/64768d Inode:101618387 硬链接:1 权限:(0777/lrwxrwxrwx) Uid:( 0/ root) Gid:( 0/ root) 环境:system_u:object_r:mail_spool_t:s0 最近访问:2025-09-12 09:34:28.921770355 +0800 最近更改:2024-06-25 22:28:11.000000000 +0800 最近改动:2025-05-29 21:25:12.135806195 +0800 创建时间:2025-05-29 21:25:12.128806007 +0800 如果想要查看符号链接本身的信息(如大小、时间戳),而不是它指向的目标,需要使用-L或--dereference选项来禁用跟踪。 [root@blog ~]# stat -L /var/mail 文件:/var/mail 大小:18 块:0 IO 块:4096 目录 设备:fd00h/64768d Inode:33896061 硬链接:2 权限:(0775/drwxrwxr-x) Uid:( 0/ root) Gid:( 12/ mail) 环境:system_u:object_r:mail_spool_t:s0 最近访问:2025-05-29 21:30:51.521510955 +0800 最近更改:2025-05-29 21:30:18.434546704 +0800 最近改动:2025-05-29 21:30:18.434546704 +0800 创建时间:2025-05-29 21:25:12.129806033 +0800
注意事项
- 善用Tab键补全: 输入路径时,按Tab键可以让系统自动补全目录名或文件名,避免拼写错误并提高效率
- 通过man stat查看完整手册