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

Ubuntu终端合并分割.tar.gz文件时命令出错求解决方案

合并同一文件夹内的分割.tar.gz文件

我来帮你搞定这个合并分割压缩包的问题!你的需求是把同前缀的分割文件(比如file1.tar.gz_aa/file1.tar.gz_ab、file2.tar.gz_aa/file2.tar.gz_ab)分别合并成完整的file1.tar.gz和file2.tar.gz对吧?之前的命令要么逻辑不对,要么语法出错,我给你梳理下正确的方法:

问题分析

你之前的第一个命令把所有文件合并到同一个文件,是因为${i%/}*的匹配范围太广,没有按前缀分组;第二个嵌套循环不仅语法有问题(for y in ${i}.gz_*后面缺了分号或者换行的do),逻辑上也没必要嵌套——我们只需要先拿到所有唯一的原始文件名前缀,再对每个前缀合并对应的分割文件就行。

正确的命令

直接运行下面的bash命令就能按前缀分组合并:

for prefix in $(ls *.gz_* | sed 's/_[a-z][a-z]$//' | sort -u); do
    cat "${prefix}_"* > "${prefix}"
done

命令解释

  1. ls *.gz_*:列出所有分割后的文件(匹配xxx.gz_aa这类格式)
  2. sed 's/_[a-z][a-z]$//':去掉文件名末尾的_aa/_ab后缀,得到原始文件名前缀(比如file1.tar.gz)
  3. sort -u:去重,确保每个前缀只出现一次
  4. 循环里的cat "${prefix}_"*:按顺序拼接当前前缀下的所有分割文件(file1.tar.gz_aa、file1.tar.gz_ab...),然后输出到原始文件名${prefix}(也就是file1.tar.gz)

验证合并结果

合并完成后,可以用下面的命令检查压缩包是否正常:

tar -tzf file1.tar.gz

如果能正常列出压缩包内的文件,说明合并成功啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:43:26