使用一个命令解压 .txz 和 .tar 压缩文件

使用一个命令解压 .txz 和 .tar 压缩文件

我有一个压缩为 *.txz 的文件。解压后我收到一个 *.tar 文件。有没有办法用一个命令解压两次?我的意思是用一个命令解压文件 (*.tar).txz 吗?

要知道我是这样做的:

xz -d file.txz
tar xvf file.tar

但我想知道是否有更好的方法。

答案1

xz -d < file.tar.xz | tar xvf -

这与任何压缩存档相同。你应该绝不必须创建原始文件的未压缩副本。

一些tar实现(例如 GNU 的最新版本)具有可以自行tar调用的内置选项。xz

使用 GNUtarbsdtar

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存档是使用 创建的pixzpixz则可能已为其添加了tar索引,这允许单独提取文件而无需解压缩整个存档:

pixz -x path/to/file/in/archive < file.tar.xz | tar xvf -

答案2

这应该是要走的路tar Jxvf file.txz

答案3

拆包可能不是正确的术语。你可以解压xz解压tar

GNU 的手册页tarman tarDebian 上默认为 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.

相关内容