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

编写Linux Shell脚本获取指定前缀的最新文件

获取特定前缀开头的最新文件的Shell脚本方案

针对你需要从大量文件中筛选特定前缀开头、且文件名包含最新日期的需求,以下是几种实用的Shell脚本实现方案:

方案1:基于文件名日期排序(最直接)

利用字符串排序匹配文件名中的日期顺序,适用于你示例中DDMonYYYY格式的日期命名规则:

# 替换为你的目标前缀,比如Subnetwork_RAN_
prefix="Subnetwork_RAN_"
# 获取最新日期的文件
latest_file=$(ls -1 "${prefix}"* | sort -r | head -n 1)
# 输出结果
echo "$latest_file"
  • ls -1:将匹配的文件按每行一个输出
  • sort -r:倒序排序字符串,日期越晚的文件名会排在最前
  • head -n 1:取排序后的第一个结果,即最新日期的文件

方案2:用find命令适配大量文件场景

如果文件夹内文件数量极多,ls可能出现性能问题,改用find更稳妥:

prefix="Subnetwork_RAN_"
latest_file=$(find . -maxdepth 1 -type f -name "${prefix}*" | sort -r | head -n 1)
echo "$latest_file"
  • -maxdepth 1:限制仅搜索当前目录,不递归子文件夹
  • -type f:仅匹配文件(排除同名目录)

方案3:按文件修改时间获取最新文件

如果你的需求是按文件实际修改时间而非文件名日期判断“最新”,可以用ls的时间排序选项:

prefix="Subnetwork_RAN_"
latest_file=$(ls -1t "${prefix}"* | head -n 1)
echo "$latest_file"
  • -t:按文件修改时间从新到旧排序

容错优化版本

如果担心没有匹配文件时脚本报错,可以增加判断逻辑:

prefix="Subnetwork_RAN_"
# 把错误输出重定向到/dev/null,避免无匹配时的报错信息
latest_file=$(ls -1 "${prefix}"* 2>/dev/null | sort -r | head -n 1)
if [ -n "$latest_file" ]; then
    echo "找到最新文件:$latest_file"
else
    echo "错误:没有找到以${prefix}开头的文件"
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:31:05