извлечь только определенное содержимое папки из сжатого архива в указанный каталог

извлечь только определенное содержимое папки из сжатого архива в указанный каталог

Это очень близко к 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что мне нужно вытащить. Чего пытаются избежать, так это экспортировать все в папку, а затем просто переместить оттуда.

Конечный результат, который я ищу, получается из zip-файла, который я вывожу в /mageпапку следующим образом:

/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

Альтернативы?

Исследуя эту проблему в прошлом, я смог найти только 2 дополнительных метода сделать что-то подобное, не прибегая к использованию mv.

  1. Используем FUSE, как предлагает Жиль:Как заставить unzip / zip не создавать подкаталог при распаковке?
  2. Использование инструмента zipnoteдля перемещения файлов внутри zip-архива перед их извлечением.

Связанный контент