linux stat命令详解

stat 命令用于Linux/Unix 系统中,用于显示文件和文件系统的详细信息。它最常用于获取文件时间戳。Linux ls 命令通常为您提供有关文件的基本详细信息,而 stat 命令打印有关从inode 中提取的文件的附加信息。在本指南中,我们通过示例进一步了解 stat 命令及其选项。

语法:

$ stat 

检查文件状态

要显示文件状态,例如大小、inode 编号链接和文件时间戳,请运行:

$ stat output.txt

stat 命令用法
输出以下信息:

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

使用 stat 命令检查文件系统状态
输出以下信息:

文件 – 描述文件的名称。

ID – 以十六进制指定系统 ID。

Namelen – 指定最大文件长度。

基本块大小 – 这是文件系统上每个块的大小。

块:

Total – 这指向文件系统中的块总数。

Free – 文件系统中剩余的空闲块数。

可用 – 非 root 用户可用的空闲块数。

索引节点:

Total – 这是系统中的 inode 总数。

Free – 这是可用的空闲 inode 数。

遵循符号链接

默认情况下,stat 命令不遵循符号链接。当您在符号链接上运行它时,输出包含有关符号链接的信息,但不包含它指向的文件。

$ stat /usr/share/zoneinfo/America/Cayman

Linux 统计命令
要遵循符号链接并打印出有关它指向的文件的信息,请使用 -L 选项,如下所示:

$ stat  -L /usr/share/zoneinfo/America/Cayman

Linux 统计命令
自定义输出

您可以使用--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 以简洁格式打印信息

结论

stat 是一个方便的命令,用于检查文件时间戳,例如文件修改或访问时间。在本指南中,我们介绍了 Linux 中的 stat 命令并重点介绍了一些示例用法。

15个Linux ps 命令例子
13个用好Linux的建议