stat命令可详细显示文件或文件系统状态,包括大小、权限、时间戳、inode编号、硬链接数等元数据,基本用法为stat filename;通过-c选项可自定义输出格式,如stat -c "%s %y"显示大小和修改时间;加-f选项可查看文件系统信息如类型、块使用情况和inode统计,适用于脚本获取精确属性及排查权限或时间问题。
stat命令用于显示文件或文件系统的详细状态信息,比ls更全面。它能输出文件的大小、权限、时间戳、inode编号、硬链接数等元数据。
基本用法
直接使用stat加文件名即可查看信息:
stat filename
例如:
$ stat example.txt
File: example.txt
Size: 4096 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1234567 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2025-04-05 10:30:22.123456789 +0800
Modify: 2025-04-05 10:25:10.987654321 +0800
Change: 2025-04-05 10:25:10.987654321 +0800
Birth: -
关键字段说明
Size:文件实际字节数
Blocks:占用的块数量(通常每块512字节或4KB)
IO Block:I/O块大小
File type:文件类型(如regular file, directory, symbolic link)
Device:所在设备号(十六进制和十进制)
Inode:该文件在文件系统中的索引节点编号
Links:硬链接计数
Uid/Gid:所有者用户ID和组ID
Access/Modify/Change/Birth:
- Access:最后一次读取时间
- Modify:内容最后一次修改时间
- Change:属性(如权限、所有者)最后一次更改时间
- Birth:创建时间(部分文件系统不支持,显示为-)
自定义输出格式
使用-c或--format参数指定输出格式:
stat -c "%n %s bytes %y" filename
常用格式符:
- %n:文件名
- %s:大小(字节)
- %y:修改时间(完整)
- %x:访问时间
- %z:变更时间
- %i:inode号
- %a:八进制权限(如644)
- %A:符号表示权限(如-rw-r--r--)
- %U:所有者用户名
- %G:所属组名
示例:只查看文件大小和修改时间
stat -c "%s %y" data.log
查看文件系统信息
加上-f选项可显示文件系统整体状态:
stat -f /home
输出包含:
- 文件系统类型(如ext4、xfs)
- 总块数、空闲块数
- 可用给非root用户的块数
- 文件节点总数与剩余数
- 最大文件名长度
基本上就这些,stat适合脚本中获取精确文件属性,也常用于排查权限或时间问题。