You need to enable JavaScript to run this app. 如何使用gawk定义.ss文件名后缀并创建对应存储目录
优惠活动
大模型
产品
解决方案
定价
更多

如何使用gawk定义.ss文件名后缀并创建对应存储目录

问题1:准确定义.ss后缀避免匹配文件名中的ss

你之前的正则写法存在两处问题:一是仅支持匹配单个字符开头的文件名,二是规则没有严格限定后缀位置。两种可靠实现方案:

  1. 正则匹配法:用/\.ss$/规则,\.匹配真实点号,$锚定匹配位置在行尾,完全不会命中文件名中间出现的ss
  2. 字符串截取法(兼容性更强,不受文件名内特殊字符影响):先判断文件名长度≥3,再截取最后3位判断是否等于.ss

修正后的.ss文件名提取命令:

# 正则写法
gawk '/\.ss$/' filenames > ss/ss_filenames
# 字符串截取写法
gawk 'length($0)>=3 && substr($0, length($0)-2) == ".ss"' filenames > ss/ss_filenames

问题2:正确触发创建ss目录

gawk没有原生mkdir函数,需要调用system()执行系统级目录创建命令,建议加上-p参数,避免目录已存在时报错。只要匹配到至少1个.ss后缀文件就触发创建的完整脚本如下:

gawk '
BEGIN {
    target_suffix = ".ss"
    has_target = 0
}
length($0)>=3 && substr($0, length($0)-2) == target_suffix {
    print $0
    has_target = 1
}
END {
    if (has_target) {
        system("mkdir -p ss")
    }
}
' filenames > ss/ss_filenames

流程优化建议

你可以直接在gawk中生成后续的文件提取命令,省去中间文件处理步骤:

gawk '
BEGIN {
    suffix = ".ss"
    img_file = "Sounddsk2.img"
    cmd_prefix = "a " img_file " get "
}
length($0)>=3 && substr($0, length($0)-2) == suffix {
    # 生成提取命令输出到脚本,核对后可直接执行
    print cmd_prefix $0 " ss/" $0
}
END {
    if (NR > 0) system("mkdir -p ss")
}
' filenames > extract_ss.sh
# 执行提取操作
chmod +x extract_ss.sh && ./extract_ss.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 20:24:03