我有一个 .tar.bz2 文件,我想通过 7-zip 命令行工具解压缩并提取该文件。
所以基本上我正在寻找相当于
tar -xjf foo.tar.bz2
对于 7-zip,只有选项“x”用于提取,所以这样做
7z x foo.tar.bz2
给我膨胀的 foo.tar 文件,而不是解压 tar 中的所有目录。 7z对应的选项是什么?
答案1
虽然您无法通过一个命令来完成此操作,但您可以使用壳牌管道将两个 7z 命令链接到一个命令行中,如下所示:
7z e -so .\Downloads\enron_mongo.tar.bz2 | 7z e -si -ttar
答案2
使用 7zip,您必须运行该命令两次,一次用于解压缩,另一次用于提取。 tar 文件格式只是首尾相连的所有内容的“一团”。然后使用各种压缩算法压缩整个 tar 文件,在您的示例中为 bzip。基本上生成的文件有两层。当您“提取”bzip 层时,您会得到一个 tar 文件,然后当您提取 tar 文件时,您会得到一堆单独的文件。
7zip 不能同时处理多个层,尽管它能够处理两个层:
7z x foo.tar.bz2
7z x foo.tar
实际上标准的 UNIX 工具的工作方式是一样的:
bunzip2 foo.tar.bz2
tar xf foo.tar
然而,unix 命令tar
具有方便的功能,可以在处理 tar 部分之前/之后使用另一个程序调用辅助压缩和解压缩步骤。基本上-j
参数调用bzip2
/ bunzip2
,你只是看不到第二步。同样-z
会调用gzip
/gunzip
等。
答案3
使用标准输出和管道的 7z 和 tar 组合的较短版本怎么样?
# 7z x -so my-compressed-tarball.tar.bz2| tar xf -
答案4
7z x -so foo.tar.bz2 | 7z x -si -ttar