如何解压其中只有一个目录的存档并将其重命名为常量名称
Posted
技术标签:
【中文标题】如何解压其中只有一个目录的存档并将其重命名为常量名称【英文标题】:How to untar an archive that has only a single directory inside and rename it to a constant name 【发布时间】:2013-04-16 10:45:44 【问题描述】:大多数 tar 软件版本确实包含一个包含版本的目录,例如 product-1.2.3
,我正在寻找一种简单的 bash 解决方案来将此类存档解压缩到不包含该版本的目录。
注意,tar 存档名称与其中包含的目录不同。
显然,一种方法是在之后重命名它,但为了做到这一点,您需要知道原始目录名称是什么。
【问题讨论】:
Note, the tar archive name is different than the directory contained inside.
你能举个例子说明你想要什么结果吗?
有很多可能的情况。您如何决定何时包含/排除存档中文件的默认根目录?您是根据档案名称还是内部目录建立新目录?
【参考方案1】:
这里有两个有用的选项:
File name transformations:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
Common options:
-C, --directory=DIR
change to directory DIR
例如
[user@host tmp]$ mkdir test-0.0.2
[user@host tmp]$ echo Hello > test-0.0.2/README
[user@host tmp]$ tar zvcf mytarball.tgz test-0.0.2
test-0.0.2/
test-0.0.2/README
[user@host tmp]$ mkdir targetdir
[user@host tmp]$ tar zxvf mytarball.tgz --strip-components=1 -C targetdir
test-0.0.2/README
[user@host tmp]$ ls targetdir/
README
[user@host tmp]$
【讨论】:
以上是关于如何解压其中只有一个目录的存档并将其重命名为常量名称的主要内容,如果未能解决你的问题,请参考以下文章