You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用find命令查找匹配指定三种模式的最新修改时间文件

解决方法

你可以通过让find输出文件修改时间戳、倒序排序后取首位的方式拿到最新文件,分两种场景提供写法:

场景1:文件名不含空格、换行等特殊字符(写法简单)

latest_file=$(find /path -maxdepth 1 -type f \( -name "REF_DATA*" -o -name "XR_CUST_LIST*" -o -name "PB_INSIGHTS*" \) -printf "%T@ %f\n" | sort -nr | head -n1 | awk '{print $2}')

参数说明:

  • %T@:find的格式化参数,输出文件的Unix时间戳格式修改时间,数值越大表示修改时间越新
  • sort -nr:按数值倒序排列,最新修改的文件会排在第一条
  • head -n1:取排序后的第一条记录
  • awk '{print $2}':剔除时间戳,仅保留文件名

场景2:文件名含空格、特殊字符(更稳妥的兼容写法)

使用空字符作为内容分隔符,避免特殊字符导致截断错误:

latest_file=$(find /path -maxdepth 1 -type f \( -name "REF_DATA*" -o -name "XR_CUST_LIST*" -o -name "PB_INSIGHTS*" \) -printf "%T@\0%f\0" | sort -z -nr | head -z -n2 | tail -z -n1)

如果需要将所有符合规则的文件按修改时间从新到旧存入数组,可以用如下写法:

readarray -t array < <(find /path -maxdepth 1 -type f \( -name "REF_DATA*" -o -name "XR_CUST_LIST*" -o -name "PB_INSIGHTS*" \) -printf "%T@ %f\n" | sort -nr | awk '{print $2}')
# 最新文件就是数组的第一个元素 ${array[0]}

内容的提问来源于stack exchange,提问作者Amit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:57:03