如何从“tarball”(.tar.gz)中提取单个文件夹及其子文件夹

如何从“tarball”(.tar.gz)中提取单个文件夹及其子文件夹

我需要从.tar.gzCentOS 服务器上的 tarball ( ) 中提取单个文件夹及其子文件夹。我完全不知道如何使用 SSH 终端来执行此操作。

我试过:

gunzip -c files_20100623.0110.tar.gz | tar -xvf home/bsisplas/public_html/staging/template/*.*

但是它似乎无法在存档中找到该文件。另外,gunzip您在语法中的哪里指定了提取的文件应该放在哪里?至少可以说我是 Linux 终端新手。

答案1

首先,当您使用 选项时-ftar您需要给它一个参数,告诉它存档的文件名。由于您是从 管道中输入的gunzip,我们使用-表示标准输入:

gunzip -c files_20100623.0110.tar.gz | tar -xvf - home/bsisplas/public_html/staging/template/*.*

我的下一个观点是,你只需要给出目录名称。(另外:*.*通常是 DOS 主义。如果你指的是 Unix 中的“所有文件”,只需写*。如果你写的*.*是“所有名称中带有点的文件”,这可能会排除没有点的重要文件,例如MakefileREADME):

gunzip -c files_20100623.0110.tar.gz | tar -xvf - home/bsisplas/public_html/staging/template

tar这应该可以工作。但是您可以使用的选项让事情变得简单一些-z,该选项告诉它自己执行gunzip。我们使用它,并将-输入文件名替换为存档文件名:

tar -xvzf files_20100623.0110.tar.gz home/bsisplas/public_html/staging/template

这是如何运作的?

答案2

您只需要 tar。您可以使用选项获取 tarball 中的文件列表-t,然后正常提取,但使用文件路径作为最后一个参数:tar zxvf foo.tar.gz filepath

相关内容