命令简介
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查看完整手册
阅读原文