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

Shell脚本按优先级匹配txt文件名写入目标文件问题

问题根因

原有代码逻辑完全不符合需求:

  • 没有做文件存在性校验,直接输出通配符字符串,根本没有实际检索目录下的文件
  • 匹配alert_human_*.txt规则时没有做排除逻辑,通配符范围天然包含alert_human_abc_*.txt格式的文件,必然出现误识别
可直接使用的实现代码

脚本存放路径为human/stg,直接在该目录下创建脚本写入以下内容即可:

#!/bin/bash
# 目标输出文件路径
TARGET="../temp/availablefiles.txt"
# 先清空目标文件内容
> "$TARGET"

# 按优先级先匹配alert_human_abc_*.txt类文件
abc_match=(alert_human_abc_*.txt)
# 校验是否存在真实匹配的文件(规避通配符无匹配时返回原字符串的问题)
if [ -f "${abc_match[0]}" ]; then
    printf "%s\n" "${abc_match[@]}" > "$TARGET"
else
    # 无abc类文件时,匹配普通规则,手动排除abc类文件避免误判
    for f in alert_human_*.txt; do
        [ -f "$f" ] || continue
        if [[ "$f" != alert_human_abc_*.txt ]]; then
            echo "$f" >> "$TARGET"
        fi
    done
fi
逻辑说明
  • 优先级严格符合要求:只要目录下存在alert_human_abc_*.txt格式文件,就只会写入该类文件名,不会处理普通格式文件
  • 普通规则匹配时增加了过滤逻辑,所有带abc_段的同前缀文件都会被跳过,不会出现误识别
  • 兼容无匹配文件的场景:如果两类文件都不存在,会生成空的availablefiles.txt,不会把通配符字符串写入文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:06:33