这非常接近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
,我只想要app
和skin
文件夹。这并不意味着它总是这两个文件夹,只是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-master
为mage
:
$ mv /srv/www/magefoler-master /srv/www/mage
备择方案?
在过去研究这个确切的问题时,我只能找到两种额外的方法来完成类似的事情,而不必求助于使用mv
.
- 按照 Gilles 的建议使用 FUSE:如何强制 unzip / zip 在解压时不创建子目录?
zipnote
在解压之前,使用该工具移动 zip 存档中的文件。