14

我已经搜索并找到了我想要的两个部分的方法,但没有任何东西可以让你完整地做到这一点......

我想做的是将特定文件夹从 tar.gz 提取到与 tar.gz 不同的路径中的另一个文件夹。

例如:

  • 我的 backup.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”路径结束

任何帮助是极大的赞赏。

谢谢!

4

2 回答 2

18

好的,我想通了!

基本上我可以使用 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

于 2014-06-16T00:30:27.183 回答
0

这在 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
于 2014-12-12T05:56:05.330 回答