我习惯使用带有-xfz
标志的tar压缩文件,该标志可以处理gzip和bzip2存档。
最近,我遇到了一个.tar.xz
文件,我想使用一步将其解压缩tar
,该怎么办?
tar --help
列出tar
标志。 -xzf
适用于gzip
。 -xjf
到bz2
。 -xJf
到xz
。
我习惯使用带有-xfz
标志的tar压缩文件,该标志可以处理gzip和bzip2存档。
最近,我遇到了一个.tar.xz
文件,我想使用一步将其解压缩tar
,该怎么办?
tar --help
列出tar
标志。 -xzf
适用于gzip
。 -xjf
到bz2
。 -xJf
到xz
。
Answers:
Ubuntu包含GNU tar,它可以自己识别格式!根据手册,一个命令可用于任何受支持的压缩方法。
tar xf archive.tar.xz
tar xf archive.tar.gz
tar xf archive.tar
等等。如果tar提供了Cannot exec
错误,则可能需要sudo apt install xz-utils
先执行。
tar: xz: Cannot exec: No such file or directory
,请安装xz-utils
:sudo apt-get install xz-utils
tar
不再需要特定标志?
尝试
tar -xJf file.pkg.tar.xz
的-J
是,随着.xz文件专门处理的标志。
.xz
如果由于某种原因该tar
解决方案不起作用(可能是因为您使用的是OS X内置程序),请尝试以下操作:
unxz < file.tar.xz > file.tar
…相当于:
xz -dc < file.tar.xz > file.tar
然后使用tar
解压缩文件。
unxz < file.tar.xz | tar x
或类似。
tar xf
没有。ubuntu 12.04
unxz
并不等同于xz -dc
,而是xz -d
。因此,提取file.tar.xz
到file.tar
,你只要写unxz file.tar.xz
。如果您希望将相当于xz -dc
解压缩为stdout,请使用xzcat
。例如xzcat file.tar.xz | tar x
。
xz是无损数据压缩器。您将必须从xz提取tar球,然后提取tar:
unxz my_archive.tar.xz # results in my_archive.tar
然后您知道提取焦油
tar -xf my_archive.tar
资料来源:XZ Utils-Wikipedia。
xz
不需要stdout重定向。甚至更好:unxz -k
哇,真是个好人。在Mac上使用7zip完成吗?尝试这个:
7z x -so file.tar.xz | tar xf -
tar J
= tar xz
,所以我们甚至可以写成tar xzf file.tar.xz
“ normal” tar xvfz file.tar.gz
。所以基本上没有区别。使用开关前无需破折号。
Ubuntu随附了Python(Python 2.7和Python 3),其中包含提取档案的必要模块。因此,如果由于某种原因tar
缺少命令(例如您的系统管理员已将其删除,而您没有sudo
privillege来安装它),则可以使用:
python3 -c 'import tarfile,sys; b = tarfile.open(sys.argv[1]);print(b.extractall())' ./archive.xz
作为一个简短的脚本,它更具可读性:
#!/usr/bin/env python3
import tarfile,sys
with tarfile.open( sys.argv[1] ) as fd:
fd.extractall()
假设我使用创建了一个.xz
文件tar cJf thing.xz /etc/passwd
。存档将包含etc
目录,其中包含passwd
文件。使用上面的脚本将在etc
当前工作目录中创建目录,并且该目录中将包含passwd
文件。当然,可以始终通过在extractall()
函数内部指定要提取的路径来扩展它。
unar
是一个非常不错的简单程序,易于键入,可以取消存档几乎所有格式,包括7z和RAR
它似乎是用(GNU)Objective-C编写的,因此需要安装一些gnustep
(GNU的Objective-C实现)库(gnustep-base-runtime
和 libgnustep-base1.25
)
如果您使用--install-suggests或已配置apt
为安装建议的软件包,unar
则会建议并安装许多您不想要的GUI GNUStep程序
sudo apt install --no-install-suggests unar
unar linux-source.tar.xz
它将自动创建输出目录linux-source
。
xz-utils
如果尚未安装,则可能需要安装