Linux下的stat命令详解

本文详细介绍了Linux中的stat命令,用于获取文件的属性和inode信息,包括文件大小、IO块、类型、权限、访问时间、修改时间和状态时间等。还列举了常用参数,如-L、-Z、-f、-c和--terse等,帮助用户自定义输出格式和获取链接文件的原始信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下的stat命令用于查看文件属性、inode等信息

查看文件inode信息

  • File:显示文件名
  • Size:显示文件大小
  • Blocks:文件使用的数据块总数
  • IO Block:IO块大小
  • regular file:文件类型(常规文件) ,如果是其他文件类型会显示出对应的文件类型
  • Device:设备编号
  • Inode:Inode号
  • Links:链接数
  • Access:文件的权限
  • Gid、Uid:文件所有权的Gid和Uid。
  1. Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
  2. Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
  3. Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。
常见参数

-L, --dereference follow links 如果是链接文件,则获取原文件信息
-Z, --context print the security context information if available
打印SElinux安全上下文信息
-f, --file-system display file system status instead of file status
显示文件所在的文件系统的状态
-c --format=FORMAT use the sp

### Linux 中 `stat` 命令的功能及参数详解 #### 功能概述 `stat` 是一个用于显示文件或文件系统状态的命令工具。它能够提供关于文件的各种元数据信息,例如文件大小、权限、时间戳以及底层存储细节等[^1]。 --- #### 参数说明 以下是常用的 `stat` 命令参数及其作用: 1. **默认行为** 当运行 `stat 文件名` 时,默认会输出该文件的详细属性信息,包括但不限于文件名称、大小、块数、I/O 块大小、设备号、inode 编号、链接数量、访问权限、UID 和 GID、访问时间(Access)、修改时间(Modify)和变更时间(Change)。如果支持,则还会显示创建时间(Birth)[^2]。 示例: ```bash stat example.txt ``` 2. **自定义格式化输出 (`-c/--format`)** 使用 `-c` 或 `--format` 可以按照指定的格式输出文件的信息。这允许用户仅提取感兴趣的字段并控制其展示方式。 格式字符串中的占位符可以替换为实际值。例如: - `%n`: 文件名 - `%s`: 文件总字节数 - `%a`: 权限模式作为八进制表示 示例:只打印文件名和文件大小。 ```bash stat -c "%n: %s bytes" example.txt ``` 3. **无换行格式化输出 (`--printf`)** 这一选项类似于 `-c`,但它不会自动添加换行符到每条记录之后,因此适合于连续输出多个文件的结果。 示例:按特定格式输出文件名和大小。 ```bash stat --printf="Name: %n, Size: %s bytes\n" example.txt ``` 4. **显示文件系统信息 (`-f/--file-system`)** 如果希望查看某个路径所在文件系统的整体统计信息而非单个文件的数据,则可使用此标志。此类信息通常涉及文件系统的类型、挂载点位置以及其他特性描述。 示例:获取 `/home` 目录下文件系统的详情。 ```bash stat -f /home ``` --- #### 时间戳解释 通过执行标准形式下的 `stat` 调用可以获得三个主要的时间戳标记: - **Access**: 上次读取操作发生的具体时刻; - **Modify**: 数据最后一次被更改的确切日期与时间; - **Change**: 属性最后变动瞬间;即使内容未变但比如所有权转移也算作一次 change event[^2]。 注意,在某些较老版本的操作系统或者特殊类型的文件系统里可能缺乏 birth time 支持。 --- ```python import os from datetime import datetime def get_file_stats(file_path): stats = os.stat(file_path) access_time = datetime.fromtimestamp(stats.st_atime).strftime('%Y-%m-%d %H:%M:%S') modify_time = datetime.fromtimestamp(stats.st_mtime).strftime('%Y-%m-%d %H:%M:%S') change_time = datetime.fromtimestamp(stats.st_ctime).strftime('%Y-%m-%d %H:%M:%S') result = { 'File': file_path, 'Size': f'{stats.st_size} Bytes', 'Blocks': stats.st_blocks, 'IO_Block': stats.st_blksize, 'Device': hex(stats.st_dev), 'Inode': stats.st_ino, 'Links': stats.st_nlink, 'Permissions': oct(stats.st_mode)[-4:], 'User ID': stats.st_uid, 'Group ID': stats.st_gid, 'Access Time': access_time, 'Modification Time': modify_time, 'Status Change Time': change_time } return result print(get_file_stats('example.txt')) ``` 上述 Python 脚本展示了如何利用内置库模拟部分 `stat` 行为来检索本地文件的状态报告。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值