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

UNIX环境下带通配符的异长度数组比对方案咨询

匹配带随机后缀文件名的实现方案

你可以直接用 Bash 内置的模式匹配实现需求,修正后的可运行代码如下:

# 加载环境变量
. ~/.env

# 存储纯文件名的参考数组
defaultlist=("file1" "file2" "file3")
# 读取目标路径下所有csv文件的完整路径到检查数组
# 请将下方/your/target/path/替换为你实际的文件存放路径
checklist=("/your/target/path/"*.csv)

# 遍历所有待检查的目标文件名
for target_name in "${defaultlist[@]}"
do
    found=0
    # 遍历所有csv文件路径逐个匹配
    for full_path in "${checklist[@]}"
    do
        # 提取路径中的纯文件名,匹配规则:前缀为目标文件名,后缀为.csv,中间可带任意字符
        if [[ $(basename "$full_path") == "$target_name"*.csv ]]; then
            found=1
            break
        fi
    done

    if [[ $found -eq 1 ]]; then
        echo "$target_name   File present"
    else
        echo "$target_name   not present"
    fi
done

核心逻辑说明

  • 原代码的错误点:直接用正则匹配整个数组不会自动遍历数组元素,Bash 没有提供直接批量匹配数组元素的语法,需要手动嵌套循环逐个校验
  • 用basename命令提取完整路径中的纯文件名部分,排除前缀路径的干扰
  • 匹配规则$target_name*.csv天然支持文件名带随机后缀的场景,只要文件名开头是你要找的目标名称、后缀是csv就会命中
  • 不受两个数组长度不一致的影响,匹配到第一个符合要求的文件就会跳出内层循环,运行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:18:03