如何解压其中只有一个目录的存档并将其重命名为常量名称

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]$

【讨论】:

以上是关于如何解压其中只有一个目录的存档并将其重命名为常量名称的主要内容,如果未能解决你的问题,请参考以下文章

java.util.zip - 重新创建目录结构

将其移动到不同目录后无法看到我的网页

PHP PDO 没有从 .mdb 表返回正确的数据

Phonegap 和 Sencha Touch 2.3 集成

无法打开流:没有这样的文件或目录(Laravel)

将 WebP 重命名为 JPG 或其他格式的缺点?