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

技术问询:如何将文件直接压缩至.tar.gz根目录,避免嵌套归档

让我来一步步帮你解决这两个tar归档的问题:

问题1:如何将所有文件压缩至.tar包的根目录?

要把文件直接放在tar包的根目录,核心就是别让归档命令带上文件的上级目录路径,分两种常用场景处理:

  • 如果要打包的文件就在当前工作目录:
    直接指定文件名/通配符就行,比如把当前目录下所有.txt文件打包到archive.tar:

    tar -cf archive.tar *.txt
    

    生成的tar包里,所有txt文件都会直接在根目录,不会带任何路径前缀。

  • 如果要打包的文件在其他目录(比如/home/user/documents):
    用-C选项先切换到目标目录,再执行打包,这样tar会把目标目录下的内容直接归档到根目录,不会带上原目录的路径:

    tar -cf archive.tar -C /home/user/documents .
    

    这里的.代表目标目录下的所有内容,你也可以换成具体的文件名或通配符(比如*.pdf)来精准打包。

问题2:避免生成嵌套归档包,将文件直接放在.tar.gz根目录

首先得说:你给出的命令GZIP=-9 tar -czf temp.tar.gz *.txt本身是正确的,正常情况下不会生成嵌套归档包。出现嵌套大概率是这两个原因之一:

  1. 旧的归档文件被误打包进去了:如果之前已经生成过temp.tar.gz,又不小心用了错误的通配符(比如*而不是*.txt),就会把旧的tar.gz也打包进去,导致嵌套。解决办法很简单:

    • 先删掉旧的归档文件:rm temp.tar.gz
    • 再重新执行你的命令,确保只匹配.txt文件。
  2. 某个.txt文件其实是tar包:如果不小心把之前的tar归档包重命名成了.txt后缀,打包时也会把它包含进去,造成嵌套。可以用file *.txt命令检查每个txt文件的实际类型,把异常的文件排除掉。

确认没问题后,再执行你的命令:

GZIP=-9 tar -czf temp.tar.gz *.txt

生成的tar.gz里,所有.txt文件都会直接躺在根目录,不会有嵌套的归档包。

另外给你个小技巧:打包后可以用tar -tzf temp.tar.gz命令查看归档里的文件列表,提前验证文件是否在根目录,有没有嵌套情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:46:02