我有一个压缩为 *.txz 的文件。解压后我收到一个 *.tar 文件。有没有办法用一个命令解压两次?我的意思是用一个命令解压文件 (*.tar).txz 吗?
要知道我是这样做的:
xz -d file.txz
tar xvf file.tar
但我想知道是否有更好的方法。
答案1
xz -d < file.tar.xz | tar xvf -
这与任何压缩存档相同。你应该绝不必须创建原始文件的未压缩副本。
一些tar
实现(例如 GNU 的最新版本)具有可以自行tar
调用的内置选项。xz
使用 GNUtar
或bsdtar
:
tar Jxvf file.tar.xz
不过,如果您的版本具有-J
,它很可能会xz
自动检测文件,因此:
tar xvf file.tar.xz
就足够了。
如果您的 GNU 或 BSDtar
太旧而无法xz
专门支持,您可以使用以下--use-compress-program
选项:
tar --use-compress-program=xz -xvf file.tar.gz
调用压缩器实用程序的优点之一tar
是它能够在其退出状态中报告其故障。
注意:如果tar.xz
存档是使用 创建的pixz
,pixz
则可能已为其添加了tar
索引,这允许单独提取文件而无需解压缩整个存档:
pixz -x path/to/file/in/archive < file.tar.xz | tar xvf -
答案2
这应该是要走的路tar Jxvf file.txz
答案3
拆包可能不是正确的术语。你可以解压与xz
和解压和tar
。
GNU 的手册页tar
(man tar
Debian 上默认为 GNU tar)指定您可以使用:
-I, --use-compress-program PROG
filter through PROG (must accept -d)
并xz
支持该-d
选项,因此您可以使用:
tar --use-compress-program xz xvf file.txz
手册页中不太清楚的是-xz
和是or-J
的简写。--use-compress-program xz
-I xz
手册页中根本没有指定的是你可以这样做
tar xvf file.txz
在 GNU tar 中,它会将 tar 文件识别为使用xz
.