linux stat命令详解
stat 命令用于Linux/Unix 系统中,用于显示文件和文件系统的详细信息。它最常用于获取文件时间戳。Linux ls 命令通常为您提供有关文件的基本详细信息,而 stat 命令打印有关从inode 中提取的文件的附加信息。在本指南中,我们通过示例进一步了解 stat 命令及其选项。
语法:
$ stat
检查文件状态
要显示文件状态,例如大小、inode 编号链接和文件时间戳,请运行:
$ stat output.txt
输出以下信息:
File - 这是文件名。
Size - 这是常规文件的大小(以字节为单位)。
Blocks - 为文件指定的已分配块数。
IO Block - 每个块的大小(以字节为单位)。
File type - 指定文件的类型(常规文件、符号链接等)。
Device - 这是十进制或十六进制格式的设备编号。
Inode - 显示 inode 编号。
Links - 指定硬链接的数量。
Access - 这以数字或符号格式显示文件权限。
Uid - 这是所有者的用户 ID 和名称。
Gid - 组 ID 和所有者名称。
Context - 这描述了 SELinux 安全上下文。
Access - 指向上次访问文件的时间。
Modify - 指向上次修改文件内容的时间。
Change - 这是最后一次更改文件的元数据。
检查文件系统状态
打印出文件所在的文件系统状态,而不是提供有关常规文件、使用-f
或--file-system
选项的信息。
例如:
$ stat -f output.txt
输出以下信息:
文件 – 描述文件的名称。
ID – 以十六进制指定系统 ID。
Namelen – 指定最大文件长度。
基本块大小 – 这是文件系统上每个块的大小。
块:
Total – 这指向文件系统中的块总数。
Free – 文件系统中剩余的空闲块数。
可用 – 非 root 用户可用的空闲块数。
索引节点:
Total – 这是系统中的 inode 总数。
Free – 这是可用的空闲 inode 数。
遵循符号链接
默认情况下,stat 命令不遵循符号链接。当您在符号链接上运行它时,输出包含有关符号链接的信息,但不包含它指向的文件。
$ stat /usr/share/zoneinfo/America/Cayman
要遵循符号链接并打印出有关它指向的文件的信息,请使用 -L 选项,如下所示:
$ stat -L /usr/share/zoneinfo/America/Cayman

自定义输出
您可以使用--printf
或--format
选项来自定义 stat 命令的输出,而不是打印默认的自定义格式。
使用 –printf,您必须使用 \n 以换行符打印两个或多个文件操作数。例如打印设备和 inode 号:
stat --printf='%d:%i\n' /usr /etc
Output
2048:63
2048:128001
使用 –format 它默认打印换行符,例如:
stat --format=%d:%i /usr /etc
Output
2048:63
2048:128001
要打印文件名和上次数据修改时间,请键入:
stat --printf='Name: %n\nThe time of last data modification: %y\n' /usr
Output
Name: /usr
The time of last data modification: 2020-09-28 21:47:27.451120000 +0000
要打印所有者的用户名、文件类型和总大小(以字节为单位),请运行:
stat --format="%U,%F,%s" /usr
Output
stat --format="%U,%F,%s" /usr
root,directory,4096
以简洁的形式显示信息
要以简洁的格式打印信息,请使用该-t
选项,这对于其他工具的解析很有用。
结论
stat 是一个方便的命令,用于检查文件时间戳,例如文件修改或访问时间。在本指南中,我们介绍了 Linux 中的 stat 命令并重点介绍了一些示例用法。