当前位置: 首页 > news >正文

123、【OS】【Nuttx】【周边】效果呈现方案解析:find 格式化打印

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

之前 blog
【OS】【Nuttx】【周边】效果呈现方案解析:find 命令格式(上)
【OS】【Nuttx】【周边】效果呈现方案解析:find 命令格式(下)
分析了 find 命令格式的一些细节,下面继续分析这条命令

local file_mtime=$(find "$dir" -name "*.html" -type f -printf '%T@' 2>/dev/null | sort -n | tail -1)

有了之前的基础,再回过头看这条命令,就比较清晰了

首先,“$dir” 作为 starting-point,传入 find 命令作为搜索路径,当然这里 starting-point 可以是多个

然后后面紧跟着多个表达式,并且这些表达式没有显示使用逻辑与 -a 和逻辑或 -o,那就默认是逻辑与 -a,只有当前面表达式都为 true 时,才能执行后面下一个表达式

下面是第一个表达式

-name "*.html"

之前 blog 说过,双引号会抑制 Shell 展开通配符,那么此时 *.html 将完整传递给 -name 选项,而 -name 选项支持通配符匹配,可以自行匹配到搜索路径下的 .html 后缀的文件或目录

当匹配到 .html 后缀的文件或目录时,第一个表达式值为 true,与操作会进而判断下一个表达式

-type f

该表达式会进而判断匹配的 .html 后缀的是不是文件,如果是目录,该表达式值为 false,会继续判断下一个文件(目录),如果是文件,就进入下一个表达式判断

下一个表达式为

-printf '%T@'

格式化打印

下面详细分析下这个格式化打印表达式

首先 Bash 终端输入

man find

通过 /-print 查找,首先下面第一个关键点
在这里插入图片描述
这里有两个点

  • 如果没有指定搜索路径,那么默认搜索当前目录,这也是之前 blog 反复分析过的
  • 如果没有指定表达式,那么 -print 表达式将会被使用,这也是之前分析过的,比如直接在终端里面输入 find 命令,后面不接任何东西,那就会直接打印当前目录下能递归找到的所有东西(包括文件和目录)
    在这里插入图片描述

下面是 find 命令手册里面另一个也很关键的点
在这里插入图片描述
这里有两个点值得注意:

  • 可以看到不管是 -print,-print0 还是 -printf,第一个描述都是 True,这代表执行了这个表达式,一定会是 True 结果,用来给后面逻辑与 -a 和逻辑或 -o 提供判断依据
  • 如果查找的文件名里面可能包含换行符,则应该考虑使用 -print0 来替代 -print,这个点也是之前 blog
    【OS】【Nuttx】【周边】效果呈现方案解析:-print0 选项
    【OS】【Nuttx】【周边】效果呈现方案解析:-print0 补充(上)
    【OS】【Nuttx】【周边】效果呈现方案解析:-print0 补充(中)
    【OS】【Nuttx】【周边】效果呈现方案解析:-print0 补充(下)
    里面介绍过的

然后是 -printf 里面的格式化字符串 "%T@",在分析 %T 之前,先看下 %Ak 这里的描述

在这里插入图片描述

首先,%Ak 表示文件最后的访问日期,然后 k 表示一个占位符,后面可以跟着比如 @ H I k l 等符号,表示不同的含义,其中 @ 表示以 Unix 时间戳(即自 1970-01-01 00:00:00 UTC 起的秒数,浮点数形式)输出时间

接着再来看 %Tk
在这里插入图片描述
k 这里的描述和前面 %Ak 是一样的,不过这里换成了 T,表示文件的最后修改日期

所以下面这个表达式的含义就很清晰了

-printf "%T@"

表示打印出所找文件的最后修改日期,以 Unitx 时间戳浮点数的形式打印出来

ok,先到这里,下篇 blog 继续


文章转载自:

http://VZsrBC8M.dpqqg.cn
http://8nwofU1e.dpqqg.cn
http://qjvcWdwY.dpqqg.cn
http://epGWwf7A.dpqqg.cn
http://TOKImGEe.dpqqg.cn
http://Lr9eU0jL.dpqqg.cn
http://4It6wfXY.dpqqg.cn
http://2W9pfhBd.dpqqg.cn
http://U4otFYZq.dpqqg.cn
http://lKQimXHX.dpqqg.cn
http://CPEDuZoe.dpqqg.cn
http://vTPBpAn7.dpqqg.cn
http://YPpFFKcM.dpqqg.cn
http://IxCpPL9B.dpqqg.cn
http://lggYoCYl.dpqqg.cn
http://hyrTjBiN.dpqqg.cn
http://ZRseqVJF.dpqqg.cn
http://Ko69HDvj.dpqqg.cn
http://pxdHlb4L.dpqqg.cn
http://9JyQCYkV.dpqqg.cn
http://v7h2mfst.dpqqg.cn
http://w9BalZyQ.dpqqg.cn
http://G6WOzoge.dpqqg.cn
http://u5kMHEXW.dpqqg.cn
http://vzYLRJwH.dpqqg.cn
http://5vs97wYC.dpqqg.cn
http://PVhOrBjl.dpqqg.cn
http://EiiHgzN8.dpqqg.cn
http://4xQf97a4.dpqqg.cn
http://fcdadepZ.dpqqg.cn
http://www.dtcms.com/a/387126.html

相关文章:

  • DC-4靶机渗透
  • 大模型在线对话平台集锦(持续更新ing...)
  • JavaScript中 i++ 与 ++i
  • 【cookie】JavaScript操作增删改查
  • OC-AFNetworking
  • Java全栈学习笔记35
  • kylin v10 系统 上 qt 5.15.17版本构建及使用
  • Linux:基于环形队列的生产者消费模型
  • Nginx 配置 Vue 项目 Hash/History 模式路由跳转错误的解决方案
  • Linux Makefile与进度条
  • 硬件驱动——I.MX6ULL裸机启动(3)(按键设置及中断设置
  • 深度学习基本模块:RNN 循环神经网络
  • 【深度学习】PixelShuffle处理操作
  • 10.1 - 遗传算法(旅行商问题C#求解)
  • Java 集合入门:从基础到实战的完整知识指南
  • 《过山车大亨3 完整版》PSXbox版下月推出 预告片赏
  • P1107题解
  • 多目标数据关联算法MATLAB实现
  • 战略推理AI Agents:组装LLM+因果推断+SHAP
  • 【CVPR 2016】基于高效亚像素卷积神经网络的实时单幅图像与视频超分辨率
  • 基于STM32的LED实战 -- 流水灯、呼吸灯、流水呼吸灯
  • 【数据结构】——队列,栈(基于链表或数组实现)
  • 任天堂官网更新!“任亏券”不支持兑换NS2专用游戏
  • 大模型数据整理器打包及填充、Flash Attention 2解析(97)
  • 48v转12v芯片48v转5v电源芯片AH7691D
  • Oracle Database 23ai 内置 SQL 防火墙启用
  • MySQL 31 误删数据怎么办?
  • 微前端面试题及详细答案 88道(09-18)-- 核心原理与实现方式
  • VBA技术资料MF362:将窗体控件添加到字典
  • 【Leetcode】高频SQL基础题--1321.餐馆营业额变化增长