我需要解压 .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