В операционной системе Windows формат архивов ZIP считается чуть ли не стандартным, он даже поддерживается в этой операционной системе, что называется "из коробки". Если вы только перешли с Windows, то у вас, наверное, есть много таких архивов с различными файлами, также ZIP-архивы могут часто попадаться на просторах интернета. Поэтому работать с такими файлами в Linux вам однозначно придётся.
В этой небольшой статье мы рассмотрим, как распаковать ZIP Linux. Разберём несколько способов и воспользуемся несколькими утилитами, которые справятся с этой задачей.
Содержание статьи
Распаковка ZIP Linux
Формат ZIP был создан в 1989 году на замену очень медленному формату ARC. Здесь используется сжатие deflate, и на то время оно работало намного быстрее чем ARC. Исторически сложилось так, что стандартным форматом для Linux стали TAR и GZ - это усовершенствованные алгоритмы сжатия и архивации. Многие графические распаковки воспринимают и ZIP-файлы. Но они обрабатывают архивы не сами, а дают команду предназначенным для этого формата утилитам.
Утилита для распаковки ZIP называется unzip, она не всегда установлена по умолчанию. Но вы можете очень просто добавить её в свою систему из официальных репозиториев. Для этого в Ubuntu выполните:
sudo apt install unzip
А в системах, использующих формат пакетов Red Hat, команда будет выглядеть немного по-другому:
sudo yum install unzip zip
После установки большинство графических утилит для работы с архивами смогут распаковать архив ZIP Linux. Команда ZIP Linux установлена на случай, если вы захотите создавать ZIP-архивы.
Но этой утилите не нужны дополнительные оболочки для распаковки архива. Вы можете сделать всё прямо из консоли. Давайте рассмотрим синтаксис утилиты:
$ unzip опции файл_архива.zip файлы -x исключить -d папка
- файл архива - это тот файл, с которым нам предстоит работать;
- файлы - здесь вы можете указать файлы, которые нужно извлечь, разделять имена файлов пробелом;
- исключить - файлы, которые извлекать не нужно;
- папка - папка, в которую будет распакован архив.
Теперь рассмотрим опции утилиты, поскольку она позволяет не только распаковывать архивы, но и выполнять с ними определённые действия:
- -l - вывести список файлов в архиве;
- -t - протестировать файл архива на ошибки;
- -u - обновить существующие файлы на диске;
- -z - вывести комментарий к архиву;
- -c - извлекать файлы на стандартный вывод, перед каждым файлом будет выводиться его имя;
- -p - то же самое, только имя выводится не будет;
- -f - извлечь только те файлы, которые уже существуют на диске, и файлы в архиве более новые;
- -v - вывести всю доступную информацию;
- -P - указать пароль для расшифровки архива;
- -n - не перезаписывать существующие файлы;
- -j - игнорировать структуру архива и распаковать всё в текущую папку;
- -q - выводить минимум информации.
Все самые основные опции рассмотрели, теперь давайте рассмотрим несколько примеров работы с программой в терминале. Чтобы распаковать ZIP Linux в текущую папку, достаточно набрать:
unzip имя_файла
Причём расширение указывать не обязательно. Протестировать архив можно с помощью опции -t:
unzip -tq имя_файла.zip
Вы можете протестировать все архивы в текущей папке, выполнив:
unzip -tq \*.zip
Если нужно распаковывать архив не в текущую папку, можно очень просто указать нужную:
unzip имя_файла.zip -d /tmp
Также можно распаковывать не весь архив, а только нужные файлы или файлы нужного формата:
unzip имя_файла.zip \*.txt -d /tmp
С помощью опции -l вы можете посмотреть список файлов в архиве:
unzip -l file.zip
Утилиту unzip разобрали и теперь вы с ней точно справитесь. Но я говорил, что мы рассмотрим несколько способов, как выполняется распаковка ZIP Linux. Поэтому дальше мы поговорим об утилите 7z.
Демонстрация работы утилит zip и unzip в терминале:
Как распаковать ZIP Linux с помощью 7z
7z - это кроссплатформенный набор утилит для работы с архивами. Кроме собственного формата, здесь поддерживается большое количество других, в том числе tar и zip. Плюс этой утилиты - в контекстное меню файлового менеджера будет добавлен пункт, с помощью которого вы сможете распаковывать или создавать архивы.
Для установки утилиты в Ubuntu или Debian выполните:
sudo apt install p7zip-full
А в Red Hat и CentOS:
sudo yum install p7zip
Теперь вы можете использовать контекстное меню вашего файлового менеджера, чтобы распаковать архив ZIP Linux. Также можно использовать программу в консоли. Синтаксис очень похож на unzip:
$ 7z команда опции имя_архива
Команда задаёт нужное действие. Нас будут интересовать только четыре команды:
- e (Extract) - извлечь файлы из архива;
- x eXtract - извлечь файлы из архива, сохраняя полный путь;
- l (List) - список файлов архива;
- t (Test) - проверить архив.
Теперь рассмотрим самые полезные опции:
- -o - указать папку для распаковки;
- -p - указать пароль;
- -x - не извлекать эти файлы;
- -w - указать рабочую директорию;
- -y - отвечать положительно на все вопросы;
Ну и рассмотрим примеры работы с утилитой. Сначала проверим содержимое архива:
7z l файл.zip
Распаковываем архив, сохраняя структуру подкаталогов:
7z x файл.zip
Или распаковываем все файлы в одну папку, игнорируя подкаталоги:
7z e файл.zip
Или вы можете указать папку, в которую нужно распаковать файлы с помощью опции -o:
7z x файл.zip -o /tmp/
Выводы
В этой статье была рассмотрена распаковка ZIP Linux, как видите, это ненамного сложнее, чем распаковка стандартных архивов TAR. Мы рассмотрели два способа ,и теперь вы точно будете знать, что делать, когда столкнетесь с такой ситуацией. Если у вас остались вопросы, спрашивайте в комментариях!
автор, ты забыл освятить такую проблему как русские буквы в .zip архивах в linux. часто архивы открываются пустыми, если в архивен есть папка с русскими буквами. распаковываются эти папки в имени с квадратиками, и внутри файлы не открываются потом системой. за ~9 лет использования linux в качестве десктопа, я так и не нашёл решения данной проблемы.
решения нет. Благодарите нестандартную кодировку Windows
В DoubleCmd все открывается и отображается нормально.
Огромное спасибо за совет!
Используйте unar. Он сохраняет русские буквы правильно при распаковке: unar Архив.zip
Спасибо за unar 🙂
Работа с русскими именами файлов в ZIP и UNZIP под *nix
http://www.opennet.ru/tips/info/2494.shtml
https://launchpad.net/~frol/+archive/ubuntu/zip-i18n
В MC русские буквы видно нормально и распаковка тоже проходит нормально.
А как быть, если надо разархивировать *.zip в папку, где встречаются файлы с теми же именами, но сохранить нужно оба? Т.е. добавлять автоматом к имени файла индекс, типа file(1).doc.
Проблема с русскими буквами в .zip архивах решается с помощью unar (не путать с unrar).
Впечатлили/умилило до безобразия использование левого, виндового слэша, когда надо распаковать все файлы и приходится пользоваться * в имени файла.
т.е. со стандартным путем и слэшами, вот как-то так "/workdisk/backups/bl2018/*.zip " - не работает, надобно /workdisk/backups/bl2018/\*.zip
Чуть не пол-часа убил, пытаясь понять, почему отдельные файлы разархивируются, а по маске получаю результат
caution: filename not matched: ( и имя файла архива, который unzip преотлично видит).
ps. только сейчас сообразил, что возможно это оболочка лезет своими ручонками анализировать строку ввода.