我有一个压缩文件file.tar.bz2
,我想提取它,问题是压缩的文件是一个名称未知的目录。由于我想在脚本中使用它,我想指定结果目录的名称,以便它不再是未知的。
如何指定解压缩目录的名称?
我尝试重定向到stdout
:
tar -xf file.tar.bz2 -O > file
但这不起作用,因为结果是可执行文件:
file file
file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=fe7990e83d40c3e28bd1cacd345468bfa9be3d85, stripped
答案 0 :(得分:2)
我可以重申一下你的问题:
我可以建议tar -tf file.tar.bz2 > file
。 -t
参数代表 tell 。这将告诉您存档的内容。 file
文件将包含该压缩tarball的目录。
从那里,您可以解析file
文件以查找目录的名称。事实上,我刚试过这个:
directory_name=$(tar tf test.tar.bz | sed 's#/.*##' | sort -u)
如果tarball只包含一个目录,则shell变量$directory_name
将设置为该目录名。如果有多个目录,则$directory_name
将它们包含在NL分隔列表中。