从 tarball 中提取某个文件夹 - 如何告诉它提取后将文件放在哪里?

从 tarball 中提取某个文件夹 - 如何告诉它提取后将文件放在哪里?

我已经查看了这个问题的多个来源,并且我知道如何提炼文件,但没有任何消息来源告诉我如何陈述文件夹放在哪里一旦它被提取。

我试过这个:

tar -xvf tarball.tar.gz my/folder/im/extracting

当我这样做时,它似乎提取了它,因为它列出了它的内容,但也随之而来的错误:

gzip:stdin:意外的文件结尾 tar:存档 tar 中出现意外的 EOF:错误不可恢复:立即退出

我检查了当前目录,但没有看到该文件夹​​。

如何做到这一点,或者错误是否阻止在当前目录中创建它?

答案1

tar -xvf tarball.tar.gz my/folder/im/extracting

my/folder/im/extracting这将提取位置处的存档成员my/folder/im/extracting。如果存档成员是目录,则提取其内容(包括子目录,递归地)。

如果您想使用 GNU 或 FreeBSD tar 解压到不同的目录(在非嵌入式 Linux、Cygwin、FreeBSD 和 OSX 上也是如此),您可以使用

tar -xvf tarball.tar.gz --transform 's!my/folder/im/extracting!somewhere/else!' my/folder/im/extracting

如果您只想放在my不同的(现有)目录下,您可以使用

tar -xvf tarball.tar.gz -C different/directory my/folder/im/extracting

错误“gzip:stdin:意外的文件结尾”与您使用 tar 的方式无关。 “Unexpected end of file”意味着 gzip 到达文件末尾,但文件格式表明应该有更多数据。换句话说,文件被截断,例如因为您的下载被中断。

答案2

您可以使用-C选项tar指定提取文件的目标目录。但必须事先创建该目标目录。tar不会为你创建它。

所以你的命令应该看起来像......

mkdir -p my/folder/im/extracting
tar -xvf tarball.tar.gz -C my/folder/im/extracting

相关内容