使用单个命令提取 .tar 存档中的 .bz2 文件

使用单个命令提取 .tar 存档中的 .bz2 文件

我需要解压 .tar 档案中的 .bz2 文件(两步解压)

例如:

请求的文件1.tar

里面有多个.bz2 文件。

我怎样才能在 Linux 中使用单个命令提取它们。我试过了,但没有用。

tar -xvf 请求的文件1.tar | bzip2 -d

答案1

您的管道不起作用,因为 tar 不会将文件提取到 stdout,它只是列出它们。因此,bzip2 尝试将文件名列表解压缩为纯文本,这当然不是压缩文件的内容(即,它使用纯文本作为要提取的文件的内容)。

为了使用输出tar xvf作为列表文件名bzip2提取,您可以执行以下操作:

bzip2 -d $(tar xvf requested_files_1.tar)

v此处的选项需要tar列出 bzip2 的提取文件。

答案2

听起来像是

https://unix.stackexchange.com/questions/4367/extracting-nested-zip-files

因此你的脚本将会是这样的:

#!/bin/sh

for f in `ls *.tar` ; do
    dir="${f%.*}"
    mkdir "$dir"
    cd $dir
    tar -xf "../$f"
    bunzip2 *.bz2
    cd ..
done

相关内容