将单个文件解压到所需的名称

将单个文件解压到所需的名称

当我是tar单个文件时,我可以为该tar文件指定所需的名称:

$ tar -cvfj A B

当我解压单个文件时,我想执行相同的操作。

$ tar -xvjf A tmp

(即提取Atmp)。

我试图使用以下方法来做到这一点mv

$ tar -xvjf $1 | mv $1 tmp

那行不通。$1可以是任意名称,但tar文件将始终是单个文件,没有文件夹(这是保证的)。

答案1

由于您似乎使用tar压缩bzip2作为压缩单个文件的方式,因此您可能需要考虑bzip2直接使用:

压缩文件(创建filename.bz2、删除filename):

bzip2 filename

解压缩文件(创建filename、删除filename.bz2):

bunzip2 filename.bz2

压缩为特定文件名(创建newfilename.bz2、保留filename):

bzip2 -c filename >newfilename.bz2

解压缩到特定文件名(创建newfilename、保留filename.bz2):

bunzip2 -c filename.bz2 >newfilename

bzip2另请参阅您系统上的手册( man bzip2)。

答案2

这是一种解决方案:

tar -xjOf my.tar > out

这使用了-Otar 选项

-O, --to-stdout:将文件提取到标准输出

并将标准输出重定向到名为out.如果存档有多个文件,out则会将存档中的所有文件串联起来。

您可能应该直接使用bzip2,因为在压缩期间它不会存储文件树。相反,它只会将数据存储在文件中。

相关内容