Есть ли опция в команде linux zip, чтобы я мог жестко запрограммировать целевой каталог, в который она распаковывается. Например, я хотел бы заархивировать файлы ./mydir в myzipfile.zip, но я хочу, чтобы команда unzip создала конкретный каталог «projx» и развернула файлы, находящиеся в ./mydir, в него.
zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )
Ответы:
Такой опции нет, по крайней мере, для Info-ZIP. Вы должны сами создать каталог projx , переместить / скопировать в него свои файлы и затем передать его
zip
.Если каталог уже существует , то просто передать параметр ,
-d
чтобы ,unzip
чтобы указать целевую папку для извлечения.источник
Для этого есть другой способ. Вы можете расправить все содержимое zip-файла, используя следующий метод. Целевым каталогом является « projx » и выполните следующую команду.
Опция -j называется «ненужными путями» и просто выгружает каждый файл в текущий каталог вместо извлечения какой-либо структуры каталога.
источник
Я не знаю о конкретном параметре командной строки, но вы можете использовать следующие команды для достижения цели:
Первая команда создает символическую ссылку, так что вы можете получить доступ к файлам
mydir
также черезprojx
. Затем с использованиемInfo-ZIP
(протестировано с версией 2.31) символьная ссылка разыменовывается (это значение по умолчанию, если вы не укажете-y
), и файлы сохраняются рекурсивно:Видите ли, имя папки также хранится в файле - поэтому при извлечении каталог
projx
создается.Тем не менее, я не могу думать о возможности хранить абсолютные пути, но в любом случае это плохая идея.
источник
-jj
. В других операционных системах-j
поддерживается только опция (и-jj
интерпретируется как-j
), которая удаляет любой ведущий путь и, следовательно, ведет к противоположному (очень умный дизайн ...).