命令簡介
stat是Linux中用于查看文件或文件系統的詳細狀態信息的強大命令。它比ls -l更全面,其輸出信息包括但不限于:文件大小、權限、所有者、最后訪問/修改/狀態變更時間、inode號、所在設備信息等。
用法
stat命令的語法格式如下
stat [選項] 文件/目錄/符號鏈接
#選項可選
stat命令的常用選項及說明如下
-L,--dereference:支持符號連接
-f,--file-system:顯示文件系統狀態而非文件狀態
-t,--terse:以簡潔方式輸出信息
-c,--format=FORMAT:自定義輸出格式(支持格式符)
--help:顯示指令的幫助信息
--version:顯示指令的版本信息
命令案例場景
1.默認輸出:查看文件完整狀態(無選項)
[root@blog ~]# stat anaconda-ks.cfg文件:anaconda-ks.cfg大小:1505 塊:8 IO 塊:4096 普通文件
設備:fd00h/64768d Inode:67478510 硬鏈接:1
權限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
環境:system_u:object_r:admin_home_t:s0
最近訪問:2025-05-29 21:30:49.502452114 +0800
最近更改:2025-05-29 21:30:49.622455612 +0800
最近改動:2025-05-29 21:30:49.622455612 +0800
創建時間:2025-05-29 21:30:49.502452114 +0800
2.查看多個文件信息
[root@blog ~]# stat anaconda-ks.cfg /etc/yum.repos.d/redhat.repo #可以同時接受多個參數,并依次顯示每個文件的信息。文件:anaconda-ks.cfg大小:1505 塊:8 IO 塊:4096 普通文件
設備:fd00h/64768d Inode:67478510 硬鏈接:1
權限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
環境:system_u:object_r:admin_home_t:s0
最近訪問:2025-05-29 21:30:49.502452114 +0800
最近更改:2025-05-29 21:30:49.622455612 +0800
最近改動:2025-05-29 21:30:49.622455612 +0800
創建時間:2025-05-29 21:30:49.502452114 +0800文件:/etc/yum.repos.d/redhat.repo大小:358 塊:8 IO 塊:4096 普通文件
設備:fd00h/64768d Inode:69108248 硬鏈接:1
權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
環境:system_u:object_r:system_conf_t:s0
最近訪問:2025-05-30 11:50:13.236899775 +0800
最近更改:2025-05-30 11:50:13.235899733 +0800
最近改動:2025-05-30 11:50:13.235899733 +0800
創建時間:2025-05-30 11:50:13.235899733 +0800
3.查看文件系統狀態(而非單個文件)
[root@blog ~]# stat -f /home #使用-f選項來顯示文件所在文件系統的狀態,而不是文件本身的狀態。文件:"/home"ID:fd0000000000 文件名長度:255 類型:xfs
塊大小:4096 基本塊大小:4096塊:總計:10469376 空閑:9259897 可用:9259897
Inodes: 總計:20971520 空閑:20838518
#輸出將包含文件系統的信息,如類型(Type)、塊大小(Block size)、總塊數(Total blocks)、空閑塊數(Free blocks)等。這對于快速檢查磁盤使用情況很有用。
4.簡潔輸出
[root@blog ~]# stat -t anaconda-ks.cfg
anaconda-ks.cfg 1505 8 8180 0 0 fd00 67478510 1 0 0 1748525449 1748525449 1748525449 1748525449 4096 system_u:object_r:admin_home_t:s0
#按固定順序輸出字段,便于腳本解析
5.自定義格式輸出
使用--printf或-c選項可以自定義輸出的格式和內容。
格式符示例:%n: 文件名%s: 文件大小(字節)%U: 所有者用戶名%G: 所屬組名%i: inode 編號%A: 權限(符號格式,如 -rw-r--r--)%a: 權限(八進制數字格式,如 644)%x,%y,%z,%w: 分別表示訪問時間(atime),修改時間(mtime),狀態變更時間(ctime),創建時間 (btime)%F: 文件類型(如 “普通文件(regular file)”, “目錄(directory)”)應用案例:
#1)只顯示文件名和大小:
[root@blog ~]# stat -c "File: %n Size: %s bytes" anaconda-ks.cfg
File: anaconda-ks.cfg Size: 1505 bytes#2)只顯示inode編號(常用于調試硬鏈接):
[root@blog ~]# stat -c %i anaconda-ks.cfg
67478510#3)以更易讀的格式顯示修改時間:
[root@blog ~]# stat -c "這個文件最后修改時間是:%y" anaconda-ks.cfg
這個文件最后修改時間是:2025-05-29 21:30:49.622455612 +0800#4)批量查看多個文件的權限和所有者:
[root@blog ~]# stat -c "%A %U %G %n" *.cfg #這條命令會列出當前目錄下所有.cfg文件的權限、所有者、所屬組和文件名
-rw------- root root anaconda-ks.cfg
6.跟蹤符號鏈接(默認解引用)
默認情況下,stat會跟蹤符號鏈接并顯示其指向的目標文件的信息。
[root@blog ~]# stat /var/mail文件:/var/mail -> spool/mail大小:10 塊:0 IO 塊:4096 符號鏈接
設備:fd00h/64768d Inode:101618387 硬鏈接:1
權限:(0777/lrwxrwxrwx) Uid:( 0/ root) Gid:( 0/ root)
環境:system_u:object_r:mail_spool_t:s0
最近訪問:2025-09-12 09:34:28.921770355 +0800
最近更改:2024-06-25 22:28:11.000000000 +0800
最近改動:2025-05-29 21:25:12.135806195 +0800
創建時間:2025-05-29 21:25:12.128806007 +0800如果想要查看符號鏈接本身的信息(如大小、時間戳),而不是它指向的目標,需要使用-L或--dereference選項來禁用跟蹤。
[root@blog ~]# stat -L /var/mail文件:/var/mail大小:18 塊:0 IO 塊:4096 目錄
設備:fd00h/64768d Inode:33896061 硬鏈接:2
權限:(0775/drwxrwxr-x) Uid:( 0/ root) Gid:( 12/ mail)
環境:system_u:object_r:mail_spool_t:s0
最近訪問:2025-05-29 21:30:51.521510955 +0800
最近更改:2025-05-29 21:30:18.434546704 +0800
最近改動:2025-05-29 21:30:18.434546704 +0800
創建時間:2025-05-29 21:25:12.129806033 +0800
注意事項
- 善用Tab鍵補全: 輸入路徑時,按Tab鍵可以讓系統自動補全目錄名或文件名,避免拼寫錯誤并提高效率
- 通過man stat查看完整手冊
閱讀原文