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
*.bz2
bunzip
tar 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