在重命名根目标时解压缩包含单个根目录的 tarball

Posted

技术标签:

【中文标题】在重命名根目标时解压缩包含单个根目录的 tarball【英文标题】:Decompressing a tarball containing a single root directory while renaming the root destination 【发布时间】:2014-01-15 08:10:47 【问题描述】:

这是场景:

$ wget "http://foo.bar/repository/nightly/src/foo-latest.tar.gz"
$ tar -xzf foo-lastest.tar.gz
$ ls # the archive root contained a single directory named after software name and the build date
foo-20140115-0024

你想要的是最后,提取的文件放在目录foo中,而不是foo-20140115-0024。您当然可以在解压缩后移动目录:

$ mv `tar -tvzf foo-latest.tar.gz | head -n1 | awk 'print $6'` foo

问题来了:是否有更短/更合适的方法来执行相同的结果?

【问题讨论】:

【参考方案1】:

这应该可行:

$ mkdir foo
$ tar -C foo --strip-components=1 -xzf foo-latest.tar.gz

首先我们创建输出目录。 之后,我们使用-C 将存档解压缩到该目录,并使用--strip-components 从存档中删除根目录。

【讨论】:

以上是关于在重命名根目标时解压缩包含单个根目录的 tarball的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中压缩下载的图像并在需要时解压缩?

Unix-在重命名文件时将相同文件从多个目录复制到新目录

将(年份)保存在重命名文件夹中

tp框架命名空间

TP框架 命名空间 与第三方类

如何将 Hadoop 目录压缩为单个 gzip 文件?