让我们摘录尤克里里的歌曲:
tar -xvzf ukulele_songs.tar.gz
解压文件时,它们会在终端窗口中列出。
我们使用的命令行选项包括:
-x:从tar文件中提取、检索文件。 -v:Verbose,在提取文件时列出这些文件。 -z:gzip,使用gzip解压tar文件。 -f:file,我们希望tar使用的tar文件的名称。此选项后面必须跟TAR文件的名称。
使用ls列出目录中的文件,您将看到已经创建了一个名为Ukulele sones的目录。解压缩的文件位于该目录中。这个目录是从哪里来的?它包含在tar文件中,并与文件一起解压。
现在让我们摘录吉他歌曲。为此,我们将使用与前面几乎完全相同的命令,但有一个重要的区别。.bz2扩展名后缀告诉我们它已使用bzip2命令压缩。我们将不使用-z(Gzip)选项,而使用-j(Bzip2)选项。
tar -xvjf guitar_songs.tar.bz2
同样,在提取文件时,会将文件列出到终端。需要明确的是,我们与.tar.bz2文件的tar一起使用的命令行选项是:
-x:从tar文件中提取、检索文件。 -v:Verbose,在提取文件时列出这些文件。 -j:bzip2,使用bzip2解压tar文件。 -f:file,我们希望tar使用的tar文件的名称。
如果我们列出下载目录中的文件,我们将看到已经创建了另一个名为Guitar歌曲的目录。
选择将文件解压缩到的位置
如果我们希望将文件解压缩到当前目录以外的位置,可以使用-C(指定目录)选项指定目标目录。
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
查看我们的文档/歌曲目录,我们会看到已经创建了Guitar歌曲目录。
请注意,目标目录必须已经存在,如果不存在,tar将不会创建它。如果您需要创建一个目录,并让tar在一个命令中将所有文件解压缩到其中,您可以执行以下操作:
mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/
p目录(父目录)选项使mkdir创建所需的任何父目录,从而确保创建了目标目录。
在解压缩之前查看焦油文件内部
到目前为止,我们刚刚冒了一次险,提取了看不见的文件。你最好三思而后行。在解压tar文件之前,您可以使用-t(List)选项查看它的内容。通过less命令通过管道输出通常很方便。
tar -tf ukulele_songs.tar.gz | less
注意,我们不需要使用-z选项来列出文件。我们只需要在从.tar.gz文件提取文件时添加-z选项。同样,我们不需要-j选项来列出tar.bz2文件中的文件。
滚动查看输出,我们可以看到tar文件中的所有内容都保存在一个名为Ukulele歌曲的目录中,并且在该目录中有文件和其他目录。
我们可以看到,Ukulele歌曲目录包含称为随机歌曲、雷蒙斯和Possible的目录。
要从tar文件中的目录中提取所有文件,请使用以下命令。请注意,路径用引号括起来,因为路径中有空格。
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
要解压缩单个文件,请提供文件的路径和名称。
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
您可以使用通配符提取选定的文件,其中*表示任意字符串,?表示任何单个字符。使用通配符需要使用--通配符选项。
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
在不解压缩目录的情况下解压缩文件
如果不希望在硬盘上重新创建tar文件中的目录结构,请使用--strie-component选项。--strie-component选项需要数字参数。该数字表示要忽略的目录级数。仍会提取忽略目录中的文件,但不会将目录结构复制到硬盘上。
如果我们在示例tar文件中指定--strie-component=1,则不会在硬盘上创建tar文件中最顶层的Ukulele歌曲目录。本应解压到该目录的文件和目录将在目标目录中解压。
tar -xvzf ukulele_songs.tar.gz --strip-components=1
我们的示例tar文件中只有两级目录嵌套。因此,如果我们使用--strie-component=2,那么所有文件都会被解压到目标目录中,并且不会创建任何其他目录。
tar -xvzf ukulele_songs.tar.gz --strip-components=2
如果您查看Linux的手册页,您会发现tar肯定是标题“具有最多命令行选项的命令”的一个很好的候选者。值得庆幸的是,要允许我们从.tar.gz和tar.bz2文件中提取文件并进行良好的粒度控制,我们只需要记住这些选项中的一小部分。