当我是tar
单个文件时,我可以为该tar
文件指定所需的名称:
$ tar -cvfj A B
当我解压单个文件时,我想执行相同的操作。
$ tar -xvjf A tmp
(即提取A
到tmp
)。
我试图使用以下方法来做到这一点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
这使用了-O
tar 选项
-O, --to-stdout
:将文件提取到标准输出
并将标准输出重定向到名为out
.如果存档有多个文件,out
则会将存档中的所有文件串联起来。
您可能应该直接使用bzip2
,因为在压缩期间它不会存储文件树。相反,它只会将数据存储在文件中。