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