foo.tbz2假设我的目录中有一个文件。我想tar从存档中提取文件,但提取到不同的目录。似乎bunzip2只会将存档提取到与存档相同的目录中。

这可行,但我想知道是否有更好的方法:

cd /another/directory
bunzip2 -k /original/directory/foo.tbz2

答案1

您可以使用其他 bzip2 工具:

bzcat foo.tbz2 > /another/directory/foo.tar

bzip2 -ckd foo.tbz2 > /another/directory/foo.tar

请注意,如果您想将其解压到另一个目录,您可以使用 -C 选项tar

tar xjf foo.tbz2 -C /another/directory

答案2

我的建议是:如果你有一个是否*bz2 file 使用 就使用,因为 tar 命令有很多功能可以帮助你。*.tar.bz2*.bz2bunziptar command

tar -jxf *.tar.bz2 -C yourplace/
or 
tar -jf *.bz2 -C yourplace/

答案3

以前脚本的版本(没有双磁盘写入 - 将解压的文件保留在内存中 - 如果文件很大且磁盘速度较慢,则速度会产生巨大差异):

#!/bin/sh

maxsize=2G
mkdir tmpfs 2>/dev/null
mount -t tmpfs -o size=${maxsize} tmpfs tmpfs

for i in $(ls -rS *.gz | sed 's/\.gz//');
do
     nice -n 19 gunzip -c ${i}.gz > tmpfs/${i}
     nice -n 19 bzip2 -c tmpfs/${i} > ${i}.bz2
     rm -f tmpfs/${i}
     if test -s "${i}.bz2"
     then
            rm -f "${i}.gz"
     fi
done
umount tmpfs

相关内容