使用 Linux stat 命令创建灵活的文件列表 | Linux 中国

标签: linux  java  python  css  html

 

导读:stat 命令还可以用来创建文件列表。这些列表非常灵活,你可以选择包含上述任何或全部信息。       

本文字数:3797,阅读时长大约:4分钟

https://linux.cn/article-12637-1.html
作者:Sandra Henry-stocker
译者:geekpi

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中国 荣誉推出

版权声明:本文为F8qG7f9YD02Pe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/F8qG7f9YD02Pe/article/details/108744122

智能推荐

Linux内核贡献全球第二,开源四大基础软件,为什么华为要啃下这块硬骨头

作者 | Just 出品 | CSDN(ID:CSDNnews) 回顾计算机发展的历史,任何一个计算架构的成功都离不开强大的硬件,但这背后更需要繁荣的软件生态。 1960年的集中式计算出现后,诸多基础软件应运而生,随后进入“Win-tel”独霸PC的时代,近年来,Intel和Linux又带来了分布式计算的高潮。   如今,随着5G的到来,移动互联网业务进一步发展,...

在liunx中安装elasticsearch(Elasticsearch head插件安装,kibana安装,ik分词器安装)

目录 安装Elasticsearch(单节点Linux环境) Elasticsearch head插件安装 kibana安装 安装ik分词器 安装Elasticsearch(单节点Linux环境) 我安装的是7.6.1版本以下是提供的安装包主要官网下载太慢 elasticsearch-7.6.1-linux-x86_64.tar.gz elasticsearch-analysis-ik-7.6.1...

前端小练习:jQuery酷炫照片墙

jQuery酷炫照片墙 效果展示: HTML代码: css代码: jQuery代码: 方法 解释 transform transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。W3scool Math.random() 产生随机数。编程狮 translate 绘图函数编程狮 attr attr() 方法设置或返回被选元素的属性和值。编程狮 anima...

springMVC拦截器

一、     SpringMVC拦截器实现原理 用户请求到DispatherServlet中,DispatherServlet调用HandlerMapping查找Handler,HandlerMapping返回一个拦截器链(HandlerExecutionChain),springmvc中的拦截器是通过HandlerMapping发起的。 &nbs...

Unity Json反序列化

Json反序列化 结果:...

猜你喜欢

[机器学习-回归算法]Sklearn之线性回归实战

Sklearn之线性回归实战 一,前言 二,热身例子 三,贸易公司的简单例子 四,Sklearn 官网里的一个例子 参考资料 一,前言 一元线性回归的理论片请看我这个链接 二,热身例子 预测直线 y=1x1+2x2+3y = 1x_1 + 2x_2 +3y=1x1​+2x2​+3 导入LinearRegression 从Sklearn.liear_model 包里 拟合数据也可以说是训练 检验正确...

Android 开发者,你真的懂 Context 吗?

Android Context 详解 前言 一、Context是什么 二、Context结构 1、ContextImpl类介绍 2、ContextWrapper类介绍 3、ContextThemeWrapper 三、Context的数量 四、Context注意事项 五、如何正确回复以上面试题? 前言 Context 相信所有的 Android 开发人员基本上每天都在接触,因为它太常见了。但是这并不...

SpringMVC ----Json的简单交互处理

SpringMVC--Json Json的介绍 什么是JSON? JSON 和 JavaScript 对象互转 Controller返回JSON数据 Jackson 乱码 乱码的解决方法一 代码优化 乱码统一解决方法 返回json字符串统一解决 测试多个对象的集合输出 输出时间对象 抽取为工具类 FastJson fastjson 三个主要的类: JSONObject JSONArray JSON...

微信小程序自定义组件简单实现

本文将教你如何实现一个自定义的toast提示框,实现后的基本效果图如下: 小程序中一个自定义组件由 json wxml wxss js 4个文件组成的。下面我们一步一步地来创建文件及完成其中的配置: step1:创建自定义组件 首先创建一个components文件夹,用于放置所有自定义的组件,创建之后的目录结构为 其中的toastedit是我们本次...

PyTorch学习(四)--用PyTorch实现线性回归

教程视频:https://www.bilibili.com/video/BV1tE411s7QT 废话不多说,代码如下: 结果: 0 56.52023696899414 1 25.170454025268555 2 11.214292526245117 3 5.001270771026611 4 2.2352840900421143 5 1.0038176774978638 6 0.4554775...