linux 命令 stat 详解

本文介绍了Linux下stat命令的使用方法及应用场景,详细解释了如何通过stat命令获取文件的各种属性信息,包括文件大小、块占用、权限等,并展示了如何解析文件权限的数字表示。

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

linux命令总结之stat命令

ls 命令及其许多参数提供了一些非常有用的文件信息。另一个不太为人所熟知的命令 stat 提供了一些更为有用的信息。

 man stat

下面演示了stat 不带参数显示的信息:

1

2

3

4

5

6

7

8

[root@Gin scripts]# stat date.txt

  File: `date.txt'

  Size: 40              Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d      Inode: 261790      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-01-29 10:49:25.119790781 +0800

Modify: 2017-01-29 10:49:11.961790098 +0800

Change: 2017-01-29 10:49:11.961790098 +0800

注意使用该命令获得的信息:除了通常的文件大小(也可以使用 ls -l 命令获得)以外,您还获得了该文件占用的块数。通常的 Linux 块大小为 512 字节,因此一个大小为 93,300,148 字节的文件将占用 (93300148/512=)182226.85 个块。由于块都是完整占用,因此该文件使用了一些整数个数的块。无需猜测就可以获得确切的块数。

  您还可以从以上输出中获得文件所有权的 GID UID,以及权限的八进制表示形式 (6751)。如果要将文件恢复到它现在具有的相同权限,可以使用 chmod 6751oracle,而不是显式拼写这些权限。

  以上输出最有用的部分是文件访问时间戳信息。该输出显示,该文件被访问的时间是 2006-08-0404:30:52(显示在“Access:”的旁边),即 2006 8 4 日上午 4:30:52。这是某个人开始使用数据库的时间。该文件的修改时间是 2005-11-02 11:49:47(显示在“Modify:”的旁边)。最后,“Change:”旁边的时间戳显示文件状态更改的时间。

stat 命令的修改符 -f 显示了有关文件系统(而非文件)的信息:

1

2

3

4

5

6

[root@Gin scripts]# stat -f date.txt

  File: "date.txt"

    ID: ff0d2532e41897c0 Namelen: 255     Type: ext2/ext3

Block size: 4096       Fundamental block size: 4096

Blocks: Total: 1851748    Free: 1286127    Available: 1190396

Inodes: Total: 479552     Free: 409340

另一个选项 -t 显示了完全相同的信息,只不过是在一行中显示的:

1

2

[root@Gin scripts]# stat -t date.txt

date.txt 40 8 81a4 0 0 803 261790 1 0 0 1485658165 1485658151 1485658151 4096

这对 shell 脚本非常有用,在 shell 脚本中可以使用一个简单的 cut 命令获得值以进行进一步处理。

应用案例:

如何取得stat /poe命令后文件的权限对应的数字内容,如-rw-r--r--644,要求使用命令取得6440644这样的数字。

 

1

2

3

4

5

6

7

8

9

10

[root@Gin scripts]# stat date.txt

  File: `date.txt'

  Size: 40              Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d      Inode: 261790      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-01-29 10:49:25.119790781 +0800

Modify: 2017-01-29 10:49:11.961790098 +0800

Change: 2017-01-29 10:49:11.961790098 +0800

[root@Gin scripts]# stat -c %a date.txt

644

 引用:http://www.cnblogs.com/ginvip/p/6539393.html
细节影响成败,感谢 琴酒网络 的总结整理。

### 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、付费专栏及课程。

余额充值