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

Tar文件是压缩档案。在使用像Ubuntu这样的Linux发行版时,甚至在使用macOS上的终端时,你会经常遇到它们。以下是如何提取或解压缩tar文件的内容,也称为tarball。

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

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

。柏油 文件扩展名的一部分代表 ŤARchive,这就是这两种文件类型都被称为tar文件的原因。 Tar文件的日期一直追溯到1979年的时候 柏油 创建命令以允许系统管理员将文件存档到磁带上。四十年后,我们仍在使用 柏油 命令将tar文件解压缩到我们的硬盘上。某个人可能仍在使用 柏油 用胶带。

。广州 要么 操作.bz2 扩展名后缀表示已使用以下任一方式压缩存档 gzip的 要么 bzip2的 压缩算法。该 柏油 命令将与两种类型的文件一起愉快地工作,因此使用哪种压缩方法并不重要 – 并且它应该在您拥有Bash shell的任何地方都可用。你只需要使用适当的 柏油 命令行选项。

从Tar文件中提取文件

假设你已经下载了两个乐谱文件。调用一个文件 ukulele_songs.tar.gz ,另一个被称为 guitar_songs.tar.bz2。这些文件位于Downloads目录中。

下载目录中有两个tar文件

让我们提取尤克里里琴歌曲:

tar -xvzf ukulele_songs.tar.gz

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

从tar文件中提取所有文件

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

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

列出目录中的文件 LS 你会看到一个名为Ukulele Songs的目录。提取的文件位于该目录中。这个目录来自哪里?它包含在 柏油 文件,并与文件一起提取。

在下载目录中创建的Ukulele Songs目录

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

tar -xvjf guitar_songs.tar.bz2

在Downloads文件夹中提取吉他歌曲tar文件

再一次,文件在提取时列在终端中。要清楚,我们使用的命令行选项 柏油 为了 .tar.bz2格式 文件是:

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

如果我们列出下载目录中的文件,我们将看到另一个名为Guitar Songs的目录已经创建。

下载目录中创建的吉他歌曲目录

选择将文件解压缩到的位置

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

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

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

在Documents / Songs目录中创建的Guitar songs目录

请注意,目标目录必须已存在, 柏油 如果它不存在,将不会创建它。如果您需要创建一个目录并拥有 柏油 在一个命令中将文件解压缩到一起,您可以按如下方式执行:

mkdir -p~ / Documents / Songs / Downloaded && tar -xvjf guitar_songs.tar.gz -C~ / Documents / Songs / Downloaded /

-p (父母)选择原因 MKDIR 创建所需的任何父目录,确保创建目标目录。

在提取他们之前看里面tar文件

到目前为止,我们刚刚实现了信仰的飞跃并提取了看不见的文件。你可能想在跳跃之前先看看。你可以查看一个的内容 柏油 在使用之前提取它之前的文件 -t (列表)选项。通过管道输出通常很方便 命令。

tar -tf ukulele_songs.tar.gz |减

请注意,我们不需要使用 -z 列出文件的选项。我们只需要添加 -z 当我们从a中提取文件时的选项 名为.tar.gz 文件。同样,我们不需要 -j 列出文件的选项 TAR.BZ2 文件。

tar文件的内容通过少量传输

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

tar文件内容的第二个视图通过较少的管道传输

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

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

tar -xvzf ukulele_songs.tar.gz“尤克里里歌曲/ Ramones /”

从tar文件中提取单个文件夹

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

tar -xvzf ukulele_songs.tar.gz“Ukulele Songs / 023 – My Babe.odt”

从tar文件中提取单个文件

您可以使用通配符提取一系列文件,其中 * 代表任何字符串和 代表任何单个字符。使用通配符需要使用 --wildcards 选项。

tar -xvz –wildcards -f ukulele_songs.tar.gz“尤克里里歌曲/可能/ B *”

用通配符从tar中提取歌曲

在不提取目录的情况下提取文件

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

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

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

使用--strip-components = 1从tar文件中提取文件

在我们的示例tar文件中只有两级目录嵌套。所以,如果我们使用 --strip成分= 2,所有文件都在目标目录中提取,并且不会创建其他目录。

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

使用--strip-components = 2从tar文件中提取文件

如果你看一下Linux手册页,你会看到它 柏油 必须成为“具有最多命令行选项的命令”标题的良好候选者。值得庆幸的是,允许我们从中提取文件 名为.tar.gzTAR.BZ2 具有良好粒度控制的文件,我们只需要记住一些这些选项。

本文机器自动生成,不保证语句完整通顺和表达准确,亦不对内容真实有效性负责,请读者知悉。