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

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

9 Solutions collect form web for “Как сделать zip / unzip в командной строке unix?”

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

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

Сжать:

 zip squash.zip file1 file2 file3 

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

 zip -r squash.zip dir1 

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

 unzip squash.zip 

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

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

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

 tar -zcvf myfile.tgz . 

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

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

 tar -zxvf myfile.tgz 

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

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


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

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

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

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

Сжимая:

 7za a archive.7z file1 file2 directory/ 

Распаковка:

 7za x archive.7z 

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

 7za a -sfx archive.exe files1 file2 dir 

Я рекомендую этот метод, если пользователи Windows не смогут открыть архивы 7z (если вы хотите посоветовать инструмент для этого: PeaZip ).

Если вы хотите использовать один и тот же алгоритм сжатия с вашими tarball, используйте ключ -J с tar :

 tar cJf archive.tar.xz file1 file2 dir 

xz – это инструмент UNIX, который использует LZMA2 для сжатия, но работает так, как работает gz , bz2 и т. д. Он даже работает как фильтр.

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

 tar cf - file1 file2 dir | 7za z -si archive.tar.7z 
 unzip <filename> 

а также

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

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

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

 jar -xf file.zip 

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

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

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

 bsdtar acf bravo.zip alfa.jpg 

Или:

 bsdtar xf bravo.zip 

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

В этом случае скопируйте список измененных файлов во временный файл и используйте zip с параметром -@ .

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

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

 Foo.h Bar.cc TestBar.cc 

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

 cat modified-files.txt | zip modified-files.zip -@ 

Это охватывает только извлечение

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

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

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

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

  • Кодирование zip-файла
  • Как развернуть и распаковать файлы рекурсивно?
  • Как распаковать несколько каталогов с zip-файлами, которые также содержат подкаталоги с zip-файлами?
  • Раскройте архив gz с расширением zip
  • Могу ли я закрепить всю папку с помощью gzip?
  • Как де-разархивировать, де-tar -xvf - de-unarchive в беспорядочной папке?
  • распаковать файл, какой каталог был создан?
  • Как я могу правильно распаковать ZIP-архив файлов с ивритскими именами?
  • Распакуйте все файлы в директории с тем же именем
  • Распаковка с помощью tar: - слишком жадничать: как исключить только файл на уровне корневого уровня?
  • поиск содержимого файлов, упакованных в zip-файл
  • Linux и Unix - лучшая ОС в мире.