从tar.gz文件中提取特定文件夹到指定目录

15

我搜寻并找到如何获取我想要的两个部分,但没有任何方法可以让您完成整个过程...

我想要做的是从tar.gz中提取一个特定的文件夹,并将其解压到不同路径中的另一个文件夹中。

例如:

  • 备份.tar.gz文件中的目录路径为:a/b/c/d(d是我的主文件夹,里面有很多其他文件夹)

  • 我想要将目录“d”解包到此不同服务器路径中的“m”内:a/b/m

  • 如果我尝试使用此代码: tar -xzf backup.tar.gz -C a/b/m

** 文件夹结构看起来像是:a/b/m/a/b/c/d 但我希望它看起来像是a/b/m+d, 这样所有存档“d”路径中的主文件/文件夹最终都会出现在“m”路径中。

非常感谢您的帮助!

谢谢!

2个回答

19

好的,我弄清楚了!

基本上我可以使用strip命令来删除前面x个目录。在这种情况下,我的命令应该是这样的:

tar -xzf backup.tar.gz --strip-components=3 -C a/b/m

这将在提取到目标目录之前从我的归档文件(backup.tar.gz : a/b/c/d)中删除前三个路径目录。

现在它看起来是这样的:a/b/m+d


就我个人而言,我尝试过这个操作,但它匹配了多个目录,提取了大量我不需要的文件,导致文件混乱。在尝试之前,我应该阅读更多的文档。 - PJ Brunet

1

这个方法对我在OS X上从GitHub仓库中下载特定文件有效:

# Move to target directory and run:
curl -#L https://github.com/USER/REPO/tarball/BRANCH | tar -xzv --strip-components 3 --include=*./some/folder

1
“--include” 是我现在需要的选项,但遗憾的是 GNU tar 上没有提供该选项。 - i336_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接