> 文件与目录管理 > stat

stat 命令指南:查看文件/目录的详细信息

`stat` 命令用于在 Linux 和 Unix 系列操作系统中显示文件或目录的详细状态信息。这些信息包括文件大小、所有者、组、访问权限、最近访问/修改时间、inode 编号等。它对于检查文件系统的元数据和诊断问题非常有用。通过本指南,您将学习 `stat` 命令的各种用法和输出结果的解释方法。

stat 概述

`stat` 命令显示的是文件或目录自身的内容,而不是文件系统为管理该对象而存储的元数据。这提供了比 `ls -l` 更详细的信息,例如文件的创建时间、最后修改时间、访问次数等,便于分析文件的更改历史或访问模式。

stat 的主要角色

`stat` 命令主要用于以下目的:

主要应用领域

  • **检查文件属性**:准确检查文件的所有权、权限、大小等。
  • **时间戳分析**:通过检查文件的创建、最后修改和最后访问时间等多种时间信息,追踪文件的更改历史。
  • **符号链接信息**:检查符号链接的目标路径及链接本身的信息。
  • **文件系统调试**:通过磁盘空间使用、块分配、inode 信息等诊断文件系统的问题。

理解 stat 输出信息

`stat` 命令的输出由多个项目组成。理解每个项目的含义非常重要。

主要输出项目

  • File: 目标文件或目录的名称。
  • Size: 文件的大小(字节)。对于目录,通常显示为 4096 字节。
  • Blocks: 文件在磁盘上占用的 512 字节块的数量。
  • IO Block: 为文件执行 I/O 操作时的有效块大小。
  • Type: 文件的类型。例如:常规文件、目录、符号链接等。
  • Device: 文件所在设备的 ID(major:minor)。
  • Inode: 文件系统内文件的唯一标识符 inode 编号。硬链接共享相同的 inode。
  • Links: 对该文件的硬链接数量。
  • Access: 文件的权限(八进制和 rwx 格式)。
  • Uid / Gid: 文件的所有者(用户 ID)及其组(组 ID)及对应名称。
  • Access / Modify / Change: `Access`: 最后访问时间 (atime),`Modify`: 最后修改时间 (mtime),`Change`: 最后更改时间 (ctime)。'Birth' 是创建时间 (crtime),可能并非所有文件系统都支持。

主要 stat 命令选项

`stat` 命令提供了一些有用的选项,可以指定输出格式或更改处理符号链接的方式。

1. 基本输出选项

2. 符号链接处理选项

3. 输出格式指定选项

生成的命令:

请尝试组合命令。

描述:

`stat` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 `stat` 命令的各种应用示例,学习如何检查和分析文件/目录的详细属性。

检查单个文件的所有信息

stat config.ini

输出 `config.ini` 文件的大小、权限、所有者、时间戳等所有详细信息。

检查符号链接本身的信息

stat -P mylink.sh

`mylink.sh` 指向 `actual_script.sh` 的符号链接时,输出 `mylink.sh` 本身的信息。(链接文件的大小、所有者等)

检查符号链接指向的原文件的信息

stat -L mylink.sh

`mylink.sh` 指向 `actual_script.sh` 的符号链接时,输出 `actual_script.sh` 文件的信息。

以用户自定义格式输出特定信息

stat -c '%n %s %y' my_document.txt

仅输出 `my_document.txt` 文件的名称、大小(字节)以及最后修改时间(YYYY-MM-DD HH:MM:SS)。

检查文件所属文件系统的信息

stat --file-system /var/log

检查 `/var/log` 目录所在文件系统的类型、块大小、挂载点等信息。

检查文件的 Unix 时间戳 (mtime)

stat -c '%Y' important_data.csv

在脚本中以 Unix 时间戳(秒)获取文件的修改时间,以便用于计算等。


相同类别命令