[esthers@clients locations]$ unzip community_images.tar.gz
Archive: community_images.tar.gz
End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note: community_images.tar.gz may be a plain executable, not an archive
unzip: cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.
我需要使用什么命令来提取.tar.gz文件中的所有文件?
#1 楼
键入man tar
以获取更多信息,但是此命令应该可以解决问题:tar -xvzf community_images.tar.gz
还可以在特定目录中提取例如
。将存档解压缩到自定义的
my_images
目录中。tar -xvzf community_images.tar.gz -C my_images
为了进一步说明,
tar
将所有文件收集到一个包中,名为community_images.tar
。 gzip程序应用了压缩,因此扩展了gz
。因此,该命令可以执行以下操作:f
:这必须是命令的最后一个标志,而tar文件必须紧随其后。它告诉tar压缩文件的名称和路径。z
:告诉tar使用gzip解压缩归档文件。x
:tar可以收集或提取文件。 x
会做后者。v
:会使tar说话很多。详细的输出显示您正在提取的所有文件。C
:意味着更改到目录DIR
。在我们的示例中,DIR
是my_images
。评论
@Shiki我看到了您建议的编辑。我认为这不是适当的更改,我更喜欢解释此工具的方式。我确实认为您的tar -xf建议将提供一个很好的附加答案。
– djeikyb
2013年12月2日在18:05
这是数百万个类似措词的问题中较好的解释之一
–JohnMerlino
2014年10月5日14:48
@KasunSiyambalapitiya默认情况下,以当前文件夹结尾。另见man tar;寻找-C选项。或者也许看看其他答案😉
– djeikyb
16年11月7日在14:58
让我想起了xckd关于tar的文章。我每次都要回来。
– mgarey
17-10-3在22:25
我的记忆法是:xtract ze v ***文件。
– Agargara
18年4月4日在8:13
#2 楼
如果要将文件提取到特定位置,可以添加-C /destination/path/
确保首先创建目录,在这种情况下:〜/ Pictures / Community
示例:
mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/
如果考虑告诉tar提取文件,则可以轻松记住它。
注意:请记住,您可以在带有
?
+ term的手册页中进行搜索,然后通过n
和N
转到要查找的术语的下一个或上一个实例。评论
不要忘记C代表“更改目录”!另外,我觉得最好不要混合使用连字符和非连字符(特别是在使用ps时会造成混淆)。
– djeikyb
2014年11月5日23:45
为什么不像其他所有命令一样呢?
– Jan M.
17 Mar 1 '17 at 13:57
我喜欢您的提示“焦油来吸引朋友”
– Nam G VU
17年11月13日在7:11
动画gif为1+
–尼克·斯蒂尔(Nick Steele)
18年9月4日在1:18
也可以使用--directory =“ / home / emmys / Pictures / Community /”(我认为它比-C更容易记住)。
–帕特里克·达克(Patrick Dark)
19年2月20日在8:11
#3 楼
在某个时候,tar
已升级为自动解压缩。现在您需要做的是:tar xf community_images.tar.gz
同样的解释适用于:
f
:这必须是命令的最后一个标志,而tar文件必须紧随其后。它告诉tar压缩文件的名称和路径。x
:提取文件。注意命令标志缺少连字符。这是因为大多数tar版本都支持gnu和bsd样式选项(简单地说,gnu需要连字符,而bsd则不需要)。评论
是否有任何文档?我一直在寻找有关此内容的参考,我从来没有使用-z标志,并且所有内容都被压缩了,所以我一直担心是否根本没有压缩tarball,哈哈。谢谢。
–neurosnap
2015年7月10日4:14
@neurosnap参见gnu手册和bsd手册
– djeikyb
15年7月12日在20:49
编辑原始答案可能会更好。
–赛斯
16年6月9日在18:04
@Seth感到/感到与众不同,足以作为一个单独的答案,尤其是在引起它的破坏性编辑的情况下。不过,下班后我会重新考虑它,这可能是比我最初想象的更简单的合并方式。
– djeikyb
16年6月9日在18:23
@EnricoMariaDeAngelis自2004年以来的bsd tar和自2010年以来的gnu tar支持自动选择解压缩器。 tar的“最新”版本(本世纪90年代?)可能不需要手动选择解压缩器。
– djeikyb
17年6月2日在4:39
#4 楼
记住tar
的所有标志可能很乏味。必需的XKCD:因此,我用Python编写了自己的小脚本。快速,肮脏的
cp
用法类似: #!/usr/bin/env python3
import tarfile,sys,os
tf = tarfile.open(name=sys.argv[1],mode='r:gz')
where = '.'
if len(sys.argv) == 3:
where = sys.argv[2]
tf.extractall(path=where)
tf.close()
按以下方式使用:
myuntar.py archive.tar
另请参见类似的脚本,用于解压缩zip存档。
评论
:)仅记住两个tar标志-caf用于基于文件名创建,-xf用于提取(AFAIK适用于每种类型的tar)。
– Videonauth
18-09-20在7:31
@Videonauth我知道,它并不那么复杂,但是由于某种原因,我不记得这些选项。也许是因为我没有足够频繁地处理档案。
– Sergiy Kolodyazhnyy
18-09-20在7:33
这只会做压缩的tar文件吗? api docs提到了一种使用透明压缩进行读取的模式;那会更像tar xf
– djeikyb
19年4月13日在4:39
#5 楼
快速解答:tar -xvf <.tar file> or <.tar.xz file>
tar -xzvf <.tar.gz file>
tar -xjvf <.tar.bz2 file>
[注意]:
-v
详细列出已处理的文件。-z
过滤存档通过gzip。-f
使用存档文件或设备ARCHIVE。-x
从存档中提取文件。-j
bzip2。tar
-xf
archive.tar#从archive.tar
中提取所有文件。#6 楼
如果无法使用tar -xvzf fileName.tar.gz
提取.tar.gz
文件,请尝试使用tar xf fileName.tar.gz
提取评论
如果它是gzip压缩的tar文件,则第一个命令将始终有效。如果不起作用,则说明您没有压缩过的tar文件。对于那些不在乎tar文件使用什么压缩算法的人,后一个命令是一个很好的建议。
– djeikyb
17 Mar 9 '17 at 2:37
#7 楼
tar xvf file.tar.gzx表示提取
v表示详细(列表文件)
f表示文件名是下一个
任何远程版本的tar都应自动检测到压缩文件已压缩,并为您添加“ z”。
#8 楼
您也可以在第一步中执行此操作:gunzip community_images.tar.gz
然后您就拥有了以下文件:community_images.tar
第二步将是:
tar -xvf community_images.tar
* .tar文件将被提取。
评论
等效堆栈溢出问题。