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

如何精简Bash解压函数:循环匹配扩展名动态输出命令

优化解压函数的精简思路求助

启动操作

我想要编写一个可通过.bash_functions调用的函数,该文件已在.bashrc中被加载。

目标

我希望减少代码量。如果编写包含重复命令(仅存在细微差异)的函数,最终会导致函数体积庞大……

函数用途

该函数将在当前工作目录中搜索与预定义扩展名数组匹配的文件。若找到匹配扩展名的文件,则执行对应的定制命令行;若找到其他扩展名的匹配文件,则执行另一种命令,以此类推。

当前工作目录示例文件

file1.7z
file2.bz2
file3.gz
file4.tgz
file5.xz

执行函数后终端输出示例

7z x -o/root/file1 /root/file1.7z
tar -xvfj /root/file2.bz2 -C /root/file2
tar -xvf /root/file3.gz -C /root/file3
tar -xvf /root/file4.tgz -C /root/file4
tar -xvf /root/file5.xz -C /root/file5

当前进展

我尚未设置扩展名数组,因为还在梳理正确的命令循环流程。我已有如下可实现需求的脚本,但希望尽可能精简代码,向各位学习技巧!

untar()
{
    clear
    for i in *.*
    do
            local EXT="$(echo "${i}" | sed 's/.*\.//')"
            if [ -n "${EXT}" ]; then
            if [[ "${EXT}" == '7z' ]]; then
                if [ ! -d "${PWD}"/"${i%%.*}" ]; then mkdir -p "${PWD}"/"${i%%.*}"; fi
                echo 7z x -o"${PWD}"/"${i%%.*}" "${PWD}"/"${i}"
            elif [[ "${EXT}" == 'bz2' ]]; then
                if [ ! -d "${PWD}"/"${i%%.*}" ]; then mkdir -p "${PWD}"/"${i%%.*}"; fi
                echo tar -xvfj "${PWD}"/"${i}" -C "${PWD}"/"${i%%.*}"
            elif [[ "${EXT}" == 'gz' ]]; then
                if [ ! -d "${PWD}"/"${i%%.*}" ]; then mkdir -p "${PWD}"/"${i%%.*}"; fi
                echo tar -xvf "${PWD}"/"${i}" -C "${PWD}"/"${i%%.*}"
            elif [[ "${EXT}" == 'tgz' ]]; then
                if [ ! -d "${PWD}"/"${i%%.*}" ]; then mkdir -p "${PWD}"/"${i%%.*}"; fi
                echo tar -xvf "${PWD}"/"${i}" -C "${PWD}"/"${i%%.*}"
            elif [[ "${EXT}" == 'xz' ]]; then
                if [ ! -d "${PWD}"/"${i%%.*}" ]; then mkdir -p "${PWD}"/"${i%%.*}"; fi
                echo tar -xvf "${PWD}"/"${i}" -C "${PWD}"/"${i%%.*}"
            fi
        fi
    done;
}

函数所需命令

本质上需要两种不同的tar命令和一种7z命令(目前我能想到的):

命令1:tar -xvf <target.{gz,tgz,xz}> -C <output folder> 
命令2:tar -xvfj <target.bz2> -C <output folder> 
命令3:7z x -o<output folder> <target.7z>

请问各位有什么可行的优化思路?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:20:39