如何在Linux上从.tar.gz或.tar.bz2文件提取文件

Tar文件是压缩的存档。在使用Linux发行版(例如Ubuntu)或在macOS上使用终端时,您会经常遇到它们。这是提取或解压缩tar文件(也称为tarball)内容的方法。

.tar.gz和.tar.bz2是什么意思?

带有 .tar.gz 或一个 .tar.bz2 扩展名是压缩的存档文件。一个只有一个文件 。柏油 扩展名是未压缩的,但是这些将是非常罕见的。

。柏油 文件扩展名的一部分代表 ŤAR细致,这就是这两种文件类型都称为tar文件的原因。 Tar文件的历史可以追溯到1979年,当时 柏油 创建命令以允许系统管理员将文件存档到磁带上。四十年后,我们仍在使用 柏油 命令将tar文件提取到我们的硬盘驱动器上。某人可能仍在使用 柏油 用胶带。

.gz 或者 .bz2 扩展名后缀表示档案已被压缩,可以使用 gzip 或者 bzip2 压缩算法。这 柏油 该命令对两种类型的文件都可以令人满意地工作,因此使用哪种压缩方法都没关系-在拥有Bash shell的任何地方都应该可以使用该压缩方法。您只需要使用适当的 柏油 命令行选项。

从Tar文件中提取文件

假设您已经下载了两个活页乐谱文件。一个文件称为 ukulele_songs.tar.gz ,另一个叫做 guitar_songs.tar.bz2。这些文件位于“下载”目录中。

让我们提取四弦琴的歌曲:

焦油-xvzf ukulele_songs.tar.gz 

提取文件后,它们会在终端窗口中列出。

我们使用的命令行选项是:

  • -X:提取,从tar文件中检索文件。
  • -v:详细,列出正在提取的文件。
  • -z:Gzip,请使用gzip解压缩tar文件。
  • -F:文件,我们想要的tar文件的名称 柏油 跟...共事。此选项后必须是tar文件的名称。

列出目录中的文件 ls 您会看到已经创建了一个目录,名为“ Ukulele歌曲”。提取的文件在该目录中。该目录从何而来?它包含在 柏油 文件,并与文件一起提取。

现在,让我们提取吉他歌曲。为此,我们将使用与以前几乎完全相同的命令,但有一个重要区别。这 .bz2 扩展名后缀告诉我们已使用bzip2命令对其进行了压缩。而不是使用-z (gzip)选项,我们将使用 -j (bzip2)选项。

焦油-xvjf guitar_songs.tar.bz2

再次,文件在提取时会列出到终端。需要明确的是,我们使用的命令行选项 柏油 为了 .tar.bz2 文件是:

  • -X:提取,从tar文件中检索文件。
  • -v:详细,列出正在提取的文件。
  • -j:Bzip2,请使用bzip2解压缩tar文件。
  • -F:文件,我们希望tar使用的tar文件的名称。

如果我们在“下载”目录中列出文件,我们将看到已经创建了另一个目录,称为“吉他歌曲”。

选择将文件提取到的位置

如果要将文件解压缩到当前目录以外的位置,则可以使用 -C (指定目录)选项。

tar -xvjf guitar_songs.tar.gz -C〜/ Documents / Songs /

在我们的Documents / Songs目录中,我们将看到Guitar Songs目录已创建。

请注意,目标目录必须已经存在, 柏油 如果它不存在,将不会创建它。如果您需要创建目录并具有 柏油 使用一个命令将文件全部提取到其中,您可以执行以下操作:

mkdir -p〜/文档/歌曲/已下载&& tar -xvjf guitar_songs.tar.gz -C〜/文档/歌曲/已下载/

-p (父母)选项原因 麦克迪尔 创建所需的任何父目录,确保已创建目标目录。

提取文件之前先查看Tar文件内部

到目前为止,我们刚刚迈出了信心飞跃,并提取了看不见的文件。您可能想在飞跃之前先看一下。您可以查看 柏油 在使用之前解压缩文件之前 -t (列表)选项。通常,将输出通过管道传输是很方便的。 较少的 命令。

tar -tf ukulele_songs.tar.gz |较少的

请注意,我们不需要使用 -z 选项列出文件。我们只需要添加 -z 我们选择 提取中 来自的文件 .tar.gz 文件。同样,我们不需要 -j 选择列出文件的选项 tar.bz2 文件。

滚动查看输出,我们可以看到tar文件中的所有内容都保存在一个名为Ukulele Songs的目录中,并且在该目录中有文件和其他目录。

我们可以看到,Ukulele歌曲目录包含名为Random Songs,Ramones和可能性的目录。

要从tar文件中的目录中提取所有文件,请使用以下命令。请注意,该路径用引号引起来,因为该路径中有空格。

tar -xvzf ukulele_songs.tar.gz“夏威夷四弦琴的歌曲/拉蒙/

要提取单个文件,请提供文件的路径和名称。

tar -xvzf ukulele_songs.tar.gz“四弦琴歌曲/ 023-我的宝贝”

您可以使用通配符提取文件的选择,其中 * 代表任何字符串,并且 ? 代表任何单个字符。使用通配符需要使用 -通配符 选项。

tar -xvz --wildcards -f ukulele_songs.tar.gz“四弦琴歌曲/可能的歌曲/ B *”

提取文件而不提取目录

如果您不想在硬盘上重新创建tar文件中的目录结构,请使用 --strip-components 选项。这 --strip-components 选项需要一个数字参数。该数字表示要忽略的目录级别。仍然会从忽略的目录中提取文件,但目录结构不会复制到您的硬盘驱动器上。

如果我们指定 --strip-components = 1 对于我们的示例tar文件,不会在硬盘驱动器上创建tar文件中的Ukulele Songs最顶层目录。本应提取到该目录的文件和目录将提取到目标目录中。

tar -xvzf ukulele_songs.tar.gz --strip-components = 1

示例tar文件中只有两层目录嵌套。所以如果我们用 --strip-components = 2,所有文件都提取到目标目录中,并且不创建其他目录。

tar -xvzf ukulele_songs.tar.gz --strip-components = 2

如果您查看Linux手册页,将会看到 柏油 必须是“具有最多命令行选项的命令”标题的理想人选。幸运的是,允许我们从中提取文件 .tar.gztar.bz2 具有良好粒度控制的文件,我们只需要记住这些选项中的少数几个即可。


$config[zx-auto] not found$config[zx-overlay] not found