Как сделать zip /unzip в командной строке unix?

Как я могу создать и извлечь zip-архивы из командной строки?

411 голосов | спросил joachim 28 Jpm1000000pmFri, 28 Jan 2011 18:52:56 +030011 2011, 18:52:56

9 ответов


500

Обычно для создания несжатого архива используется tar и gzip или bzip2 для сжатия этого архива. Соответствующие команды gunzip и bunzip2 могут использоваться для распаковки указанного архива или вы можете просто использовать флаги в команде tar для выполнения сжатия.

Если вы конкретно ссылаетесь на формат файла Zip , вы можете просто использовать zip и unzip.

Сжать:

zip squash.zip file1 file2 file3

или для zip каталога

zip -r squash.zip dir1

Чтобы распаковать:

unzip squash.zip

это распаковывает его в текущем рабочем каталоге.

ответил Justin Ethier 28 Jpm1000000pmFri, 28 Jan 2011 19:51:49 +030011 2011, 19:51:49
50

Есть действительно vast количество различных способов сжатия и распаковки под UNIX-производными, поэтому я собираюсь предположить, что вы имели в виду «zip» в общем смысле, а не /em>.

Вы можете зашифровать файлы в сжатом формате с помощью программы GNU tar:

tar -zcvf myfile.tgz .

, который будет выполнять текущий каталог. Замените . другими именами файлов, если вы хотите что-то еще.

Чтобы распаковать этот файл, используйте:

tar -zxvf myfile.tgz

Это предполагает, что у вас есть tar, способный выполнять сжатие, а также объединение файлов в один.

Если нет, вы можете просто использовать tar cvf, за которым следует gzip (опять же, если доступно) для сжатия и gunzip, за которым следует tar xvf.


Для конкретной обработки файлов формата ZIP я бы рекомендовал загрузить 7zip и использовать это - он распознает множество форматов огромных , включая ZIP-файл.

ответил paxdiablo 28 Jpm1000000pmFri, 28 Jan 2011 18:57:55 +030011 2011, 18:57:55
27

Хорошо, когда дело доходит до распространения файлов для различных операционных систем, я бы рекомендовал 7-zip .

Обычно в пакете p7zip вы получите команду 7z и 7za, с помощью которой вы можете создать свои собственные архивы 7z.

7za также может распаковать стандартный ( pkzip ) zip-архивы (и создайте их также с помощью -tzip).

Сжатие:

7za a archive.7z file1 file2 directory/

Распаковка:

7za x archive.7z

Он также может создавать самораспаковывающиеся архивы с помощью переключателя -sfx:

7za a -sfx archive.exe files1 file2 dir

Я рекомендую этот метод, если пользователи Windows не смогут открывать архивы 7z (в случае, если вы хотите посоветовать инструмент для этого: -J - это инструмент UNIX, который использует LZMA2 для сжатия, но работает путь tar, tar cJf archive.tar.xz file1 file2 dir и т. д. Он работает даже как фильтр.

7z не создает архивы с полной информацией о файловой системе в UNIX, поэтому вам нужно будет использовать xz перед использованием 7z (но поскольку 7z хранит другую информацию о gz, я бы рекомендовал использовать bz2, поскольку он предназначен для него):

tar
ответил polemon 30 Jam1000000amSun, 30 Jan 2011 10:57:22 +030011 2011, 10:57:22
22

Если у вас нет пакетов zip и unzip, и у вас есть java, вы можете использовать jar для распаковки:

jar -xf file.zip
ответил mlocke 10 +04002014-10-10T14:32:56+04:00312014bEurope/MoscowFri, 10 Oct 2014 14:32:56 +0400 2014, 14:32:56
19
unzip <filename>

и

zip -r archive.zip <filename> [filename]

Вам нужно убедиться, что эти команды установлены через диспетчер пакетов. Это не сложнее, чем использовать что-либо еще в командной строке. Это, конечно, проще, чем создание архивов с tar.

ответил Starfish 30 Jam1000000amSun, 30 Jan 2011 01:40:12 +030011 2011, 01:40:12
3

BSD Tar также может сделать это

bsdtar acf bravo.zip alfa.jpg

Или:

bsdtar xf bravo.zip
ответил Steven Penny 28 12016vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2016 08:13:25 +0300 2016, 08:13:25
2

Самый стандартный ответ: pax , который рекомендуется по cpio и tar .

В отличие от cpio и Posix tar, но как GNU tar, pax способен как архивные файлы, так и сжать архив. Это поведение отличается от zip , который сжимает каждый файл перед тем, как поместить его в архив.

ответил mouviciel 29 Jpm1000000pmSat, 29 Jan 2011 12:20:32 +030011 2011, 12:20:32
1

Это относится только к извлечению

Для этого я начал использовать dtrx.

https://brettcsmith.org/2007/dtrx/

вся суть заключается в том, чтобы удалить сложность. Таким образом, вы просто передаете в любой архив, и он выясняет, что с ним нужно сделать. Zip, tar, gz ... Использовать всегда одно и то же - dtrx archive.zip. Он задает несколько вопросов, и все готово.

dtrx доступен в большинстве репозиториев, поэтому вы можете apt | yum установить его.

ответил JackLeo 31 PM00000010000003531 2017, 13:00:35
0

Я часто пытаюсь закрепить измененные файлы в своем рабочем каталоге - либо скопировать все измененные файлы в другую рабочую директорию песочницы, либо сохранить их на короткое время, потому что я хочу отменить некоторые изменения.

В этом случае я копирую список измененных файлов во временный файл и использую zip с опцией [email protected].

Предположим, я модифицировал файлы Foo.h, Bar.cc и TestBar.cc.

Предположим, я создаю файл с именем modified-files.txt, содержимое которого:

Foo.h
Bar.cc
TestBar.cc

Я выполняю следующую команду для zip этих файлов:

cat modified-files.txt | zip modified-files.zip [email protected]
ответил R Sahu 16 PM000000100000004631 2017, 22:59:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132