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

基于扩展名(含多组合)识别文件的Bash脚本实现需求

基于扩展名(含组合扩展名)的Bash文件处理方案

我给你准备了一个实用的Bash脚本,它能精准区分单一扩展名和组合扩展名的文件,为每种类型执行专属操作——核心诀窍是优先匹配最长的组合扩展名,彻底避免像file-5.zip.tar被误判为普通zip文件的问题。

完整脚本实现

#!/bin/bash

# 遍历当前工作目录下的目标文件
for file in file-*; do
    # 跳过目录(如果当前目录存在子目录的话)
    [[ -f "$file" ]] || continue

    # 按「长组合扩展名→单一扩展名」的顺序匹配,防止误判
    case "$file" in
        *.zip.tar)
            echo "处理组合扩展名 .zip.tar 文件: $file"
            # 替换成你的实际处理逻辑,比如自定义解压/转换命令
            # custom-zip-tar-handler "$file"
            ;;
        *.tar.gz)
            echo "处理组合扩展名 .tar.gz 文件: $file"
            # 示例操作:解压tar.gz文件
            # tar -xzf "$file"
            ;;
        *.zip)
            echo "处理单一扩展名 .zip 文件: $file"
            # 示例操作:解压zip文件
            # unzip "$file"
            ;;
        *.tar)
            echo "处理单一扩展名 .tar 文件: $file"
            # 示例操作:解压tar文件
            # tar -xf "$file"
            ;;
        *.gz)
            echo "处理单一扩展名 .gz 文件: $file"
            # 示例操作:解压gz文件
            # gunzip "$file"
            ;;
        *)
            echo "未识别的文件类型: $file"
            ;;
    esac
done

关键细节说明

  • 匹配顺序是核心:必须把.zip.tar、.tar.gz这类组合扩展名放在case语句最前面,这样长扩展名的文件不会被后面的单一扩展名规则抢先匹配。
  • 容错处理:脚本里加了[[ -f "$file" ]] || continue的判断,会自动跳过目录,只处理普通文件。
  • 灵活定制:你只需要把每个分支里的echo语句替换成实际业务逻辑即可,比如解压、加密、批量转换等操作。

测试验证

把脚本保存为process-files.sh,先赋予执行权限:

chmod +x process-files.sh

在你的目标目录运行后,会输出类似如下的识别结果:

处理单一扩展名 .zip 文件: file-1.zip
处理单一扩展名 .tar 文件: file-2.tar
处理组合扩展名 .tar.gz 文件: file-3.tar.gz
处理单一扩展名 .gz 文件: file-4.gz
处理组合扩展名 .zip.tar 文件: file-5.zip.tar
处理组合扩展名 .tar.gz 文件: file-6.tar.gz
处理单一扩展名 .gz 文件: file-7.gz

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:37:51