解压 tar.gz 中的特定文件夹

解压 tar.gz 中的特定文件夹

如何使用终端/命令行 (乌班图14.04(值得信赖的塔尔))?

精确的:

-file.tar.gz
 -- folder1
 -- folder2

如何提取...

... folder1 -->  ~/locationX
... folder2 --> ~/locationY

我怎样才能做到这一点?

请注意: 这纯粹与终端/命令行有关,而不是木偶。这只是一个例子 - 如果有一个命令从 a 中解压缩特定文件夹,我将在 Puppet 中节省大约 50 个额外步骤,tar.gz因为我可以避免移动文件......

答案1

我认为应该这样做:

tar -xzf file.tar.gz -C ~/locationX folder1 -C ~/locationY folder2

-C选项表示在提取之前更改到指定目录。在 tar 文件名后指定文件名参数会将提取限制为仅那些文件或目录。您可以-C像以前一样重复这个悬挂目录。

请注意,这将在子目录中进行提取:folder1将进入~/locationX/folder1folder2将进入~/locationY/folder2。您可以使用以下--strip-components选项来防止这种情况:

tar -xzf file.tar.gz -C ~/locationX --strip-components=1 folder1 \
                     -C ~/locationY --strip-components=1 folder2

此外,如果 tar 文件中的实际前缀是./folder1./folder2,就像您使用 创建 tar 文件一样tar -czf file.tar.gz .,则需要./在文件名参数中包含该前缀,然后更改为--strip-components=2

相关内容