使用 Linux stat 命令创建灵活的文件列表
创始人
2024-03-02 05:50:10
0

stat 命令提供了很多关于文件的详细信息。

它不仅提供了文件最近变化的日期/时间,还显示了最近访问文件的时间和权限变化。它可以同时告诉你文件的字节大小和块的数量。它可以显示文件使用的 inode 以及文件类型。它包括了文件所有者和相关用户组的名称和 UID/GID。它以 “rwx”(被称为 “人类可读” 格式)和数字方式显示文件权限。在某些系统中,它甚至可能包括文件创建的日期和时间(称为“出生”)。

除了提供所有这些信息外,stat 命令还可以用来创建文件列表。这些列表非常灵活,你可以选择包含上述任何或全部信息。

要生成一个自定义列表,你只需要使用 stat 命令的 -c(或 --format)选项,并指定你想要包含的字段。例如,要创建一个以两种格式显示文件权限的列表,使用这个命令:

$ stat -c '%n %a %A' my*
my.banner 664 -rw-rw-r--
mydir 775 drwxrwxr-x
myfile 664 -rw-rw-r--
myjunk 777 lrwxrwxrwx
mykey 664 -rw-rw-r--
mylog 664 -rw-rw-r--
myscript 755 -rwxr-xr-x
mytext 664 -rw-rw-r--
mytext.bak 664 -rw-rw-r--
mytwin 50 -rw-r-----
mywords 664 -rw-rw-r--

如上例所示,%n 代表文件名,%a 代表八进制的权限,%A 代表 rwx 形式的权限。完整的列表如后面所示。

要为这个命令创建一个别名,输入这个命令,或在 .bashrc 文件中添加这个定义。

$ alias ls_perms="stat -c '%n %a %A'"

要创建一个非常接近 ls -l 提供的长列表,可以这样做:

$ stat -c '%A %h %U %G %s %y %n' my*
-rw-rw-r-- 1 shs shs 255 2020-04-01 16:20:00.899374215 -0400 my.banner
drwxrwxr-x 2 shs shs 4096 2020-09-07 12:50:20.224470760 -0400 mydir
-rw-rw-r-- 1 shs shs 6 2020-05-16 11:12:00.460355387 -0400 myfile
lrwxrwxrwx 1 shs shs 11 2020-05-28 18:49:21.666792608 -0400 myjunk
-rw-rw-r-- 1 shs shs 655 2020-01-14 15:56:08.540540488 -0500 mykey
-rw-rw-r-- 1 shs shs 8 2020-03-04 17:13:21.406874246 -0500 mylog
-rwxr-xr-x 1 shs shs 201 2020-09-07 12:50:41.316745867 -0400 myscript
-rw-rw-r-- 1 shs shs 40 2019-06-06 08:54:09.538663323 -0400 mytext
-rw-rw-r-- 1 shs shs 24 2019-06-06 08:48:59.652712578 -0400 mytext.bak
-rw-r----- 2 shs shs 228 2019-04-12 19:37:12.790284604 -0400 mytwin
-rw-rw-r-- 1 shs shs 1983 2020-08-10 14:39:57.164842370 -0400 mywords

不同之处包括: 1、不试图将字段排成可辨认的一列,2、日期是 yy-mm-dd 格式,3、时间字段更精确,4、增加了时区(-0400 是 EDT)。

如果你想根据最后一次访问的日期来列出文件(例如,用 cat 命令来显示),使用这样的命令:

$ stat -c '%n %x' my* | sort -k2
mytwin 2019-04-22 11:25:20.656828964 -0400
mykey 2020-08-20 16:10:34.479324431 -0400
mylog 2020-08-20 16:10:34.527325066 -0400
myfile 2020-08-20 16:10:57.815632794 -0400
mytext.bak 2020-08-20 16:10:57.935634379 -0400
mytext 2020-08-20 16:15:42.323391985 -0400
mywords 2020-08-20 16:15:43.479407259 -0400
myjunk 2020-09-07 10:04:26.543980300 -0400
myscript 2020-09-07 12:50:41.312745815 -0400
my.banner 2020-09-07 13:22:38.105826116 -0400
mydir 2020-09-07 14:53:10.171867194 -0400

stat 列出文件细节时,可用的选项包括:

  • %a - 八进制的访问权限(注意 #0 的 printf 标志)
  • %A – 人类可读的访问权限
  • %b – 分配的块数(见 %B
  • %B%b 报告的每个块的字节数
  • %C – SELinux 安全上下文字符串
  • %d – 十进制的设备编号
  • %D – 十六进制的设备编号
  • %f – 十六进制的原始模式
  • %F – 文件类型
  • %g – 所有者的组 ID
  • %G – 所有者的组名
  • %h – 硬链接的数量
  • %i – inode 编号
  • %m – 挂载点
  • %n – 文件名
  • %N – 如果是符号链接,会解引用为指向的文件名
  • %o – 最佳 I/O 传输大小提示
  • %s – 以字节为单位的总大小
  • %t – 十六进制的主要设备类型,用于字符/块设备特殊文件
  • %T – 十六进制的次要设备类型,用于字符/块设备特殊文件
  • %u – 所有者的用户 ID
  • %U – 所有者的用户名
  • %w – 文件创建时间,以人类可读形式; 如果未知,则为 -
  • %W – 文件创建时间,以 UNIX 纪元以来的秒数形式;如果未知,则为 0
  • %x – 上次访问时间,以人类可读形式
  • %X – 上次访问时间,以 UNIX 纪元以来的秒数形式
  • %y – 上次数据修改时间,以人类可读形式
  • %Y – 上次数据修改时间,以 UNIX 纪元以来的秒数形式
  • %z – 上次状态改变的时间,以人类可读形式
  • %Z – 上次状态改变的时间,以 UNIX 纪元以来的秒数形式

这些字段的选择都列在手册页中,你可以选择任何一个,不过用你喜欢的选项创建一些别名应该可以省去很多麻烦。有些选项,如 SELinux 安全上下文字符串,除非在系统中有使用,它将不可用。文件创建时间只有在你的系统保留该信息的情况下才可用。


via: https://www.networkworld.com/article/3573802/using-the-linux-stat-command-to-create-flexible-file-listings.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

昆仑元AI完成3000万元...
北京商报讯(记者 魏蔚)12月29日,昆仑元AI宣布,已于近期完成...
2025-12-29 22:47:00
附录1-分析setStat...
目录 1  异步执行 1.1  异步验证 1.2  连续两次执行s...
2025-05-30 16:34:42
浪潮信息:已与20余家国产...
5月9日,浪潮信息高管在业绩说明会上表示,公司实施“多元算力”战略...
2025-05-09 23:21:57
如何在CentOS上安装并...
CentOS Sysstat工具:系统监控与性能分析的利器 在Li...
2025-03-05 06:38:05
ByteBuddy 1.1...
问题描述:使用 ByteBuddy 1.10.2 版本时,抛出了 ...
2025-01-12 21:01:54
Byte-BudyStat...
在使用Byte-Buddy进行静态方法重定义时,需要进行特殊处理。...
2025-01-12 20:31:12

热门资讯

如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
硬核观察 #1249 LG 洗... #1 LG 洗衣机每天上传近 4GB 的数据?一个名为 Johnie 的 LG 洗衣机用户发现,他的...
2024 年 Linux 和开... 让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造...