仅将压缩存档中的特定文件夹内容提取到给定目录

仅将压缩存档中的特定文件夹内容提取到给定目录

这非常接近SO如何仅将压缩存档中的特定文件夹提取到给定目录? 我需要一些接近的东西,但我总是得到包含内容的文件夹,而不仅仅是它的内容这是建议的:

 #note $2 is passed in and would be == "magefoler"
 unzip /srv/file.zip "$2-master/*" -d /srv/www/mage/

我需要做什么来获取具有这种结构的拉链

file.zip
 |-magefoler-master/
 |-magefoler-master/app/*tons of files
 |-magefoler-master/skin/*tons of files

我需要将其移动到另一个文件夹,但我无法移动magefoler,我只想要appskin文件夹。这并不意味着它总是这两个文件夹,只是magefoler我需要删除其中的任何子内容、文件或文件夹。试图避免的是将所有内容导出到一个文件夹,然后从那里移动它。

我正在寻找的最终结果是从我输出到/mage文件夹的 zip 文件得到的,如下所示:

/srv/www/mage/
     |--/mage/app/*tons of files
     |--/mage/skin/*tons of files

答案1

你能不能直接解压到这里:

$ unzip /srv/file.zip "$2-master/*" -d /srv/www/

然后将文件夹移动/重命名magefoler-mastermage

$ mv /srv/www/magefoler-master /srv/www/mage

备择方案?

在过去研究这个确切的问题时,我只能找到两种额外的方法来完成类似的事情,而不必求助于使用mv.

  1. 按照 Gilles 的建议使用 FUSE:如何强制 unzip / zip 在解压时不创建子目录?
  2. zipnote在解压之前,使用该工具移动 zip 存档中的文件。

相关内容