Как распаковать zip-файл из терминала?

Только что скачал zip-файл из Интернета. Я хочу использовать терминал, чтобы распаковать файл. Как правильно это сделать?

Если unzip команда еще не установлена в вашей системе, затем запустите:

sudo apt-get install unzip

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

unzip file.zip -d destination_folder

Если исходный и конечный каталоги совпадают, вы можете просто выполнить:

unzip file.zip

Вы можете просто использовать unzip.

Установите его:

apt-get install unzip

И использовать его:

cd /path/to/fileunzip file.zip

Более полезным инструментом является 7z, который архивирует и распаковывает различные форматы сжатия, в частности lzma, обычно протокол, предлагающий самые высокие скорости сжатия.

Эта команда устанавливает 7z:

sudo apt-get install p7zip-full

Эта команда выводит список содержимого zip-файла:

7z l zipfile.zip

Эта команда извлекает содержимое zip-файла:

7z x zipfile.zip

Вы можете использовать:

unzip file.zip -d somedir

для извлечения в yourpath/somedir

Если вы хотите выполнить извлечение по абсолютному пути, используйте

sudo unzip file.zip -d /somedir

Использование скриптовых инструментов: Perl и Python

Во многих ответах здесь упоминаются инструменты, требующие установки, но никто не упомянул, что два языка сценариев Ubuntu, Perl и Python, уже поставляются со всеми необходимыми модулями, которые позволяют вам распаковывать zip-архив, что означает, что вам не нужно устанавливать что-либо еще. Просто используйте любой из двух сценариев, представленных ниже, чтобы выполнить эту работу. Они довольно короткие и даже могут быть сведены к однострочной команде, если мы захотим.

Питон

#!/usr/bin/env python3import sysfrom zipfile import PyZipFilefor zip_file in sys.argv[1:]:    pzf = PyZipFile(zip_file)    pzf.extractall()

Использование:

./pyunzip.py master.zip 

или

python3 pyunzip.py master.zip

Perl

#!/usr/bin/env perluse Archive::Extract;foreach my $filepath (@ARGV){    my $archive = Archive::Extract->new( archive => $filepath );    $archive->extract;}

Использование:

./perlunzip master.zip

или

perl perlunzip.pl master.zip

Смотрите также

Если исходный и конечный каталоги совпадают, вы можете просто выполнить:

unzip filename.zip

Я предпочитаю bsdtar к unzip/zip. Для извлечения они довольно похожи:

bsdtar -x -f /one/two/three/four.zip -C /fiveunzip /one/two/three/four.zip -d /five

Однако для застегивания молнии, bsdtar выигрывает. Допустим, у вас есть этот ввод:

/one/two/three/alfa/four.txt/one/two/three/bravo/four.txt

и хочу, чтобы это было в zip-файле:

alfa/four.txtbravo/four.txt

Это легко сделать с bsdtar:

bsdtar -a -c -f four.zip -C /one/two/three alfa bravo

zip не имеет -d опция, подобная unzip, так что у вас нет возможности достичь вышеуказанного, если вы cd первый.

Вот подробное описание опций, которые я нахожу полезными:

Команда: разархивировать -[опция] zip-путь.               -d необязательный каталог для извлечения файлов -l Список архивных файлов.               - П пароль Воспользуйся пароль для расшифровки зашифрованных записей zip-файла (если таковые имеются).               -t Тестировать архивные файлы с циклической проверкой избыточности.                 -u Обновите существующие файлы.                 -комментарий к архиву z

Следуйте этим инструкциям: http://www.codebind.com/linux-tutorials/unzip-zip-file-using-terminal-linux-ubuntu-linux-mint-debian/

Установить распаковать

Итак, прежде всего нам нужно установить unzip в нашей системе, если он не установлен. команда unzip используется для извлечения файлов из архива aZIP.

Выполните следующую команду для установки unzip

sudo apt-get install unzip

unzip Синтаксис

$ unzip [-aCcfjLlnopqtuvy] [-d dir] zipfile

Теперь выполните следующие действия:

Распаковать Файл

ВАРИАНТ 1 – Если Zip-файл находится в том же каталоге / папке, в которой находится ваш терминал, и мы хотим извлечь его в текущем рабочем каталоге.

Используйте следующую команду для достижения описанного выше сценария

sudo unzip zip_file_name.zip

если zip-файл защищен каким-либо паролем, то используйте следующую команду :

sudo ubzip -P zip_file_name.zip

Пожалуйста, убедитесь, что вы используете -P (заглавная буква P), а не -p, потому что это разные варианты.

ВАРИАНТ 2 – Если zip-файл отсутствует в том же каталоге, и мы хотим извлечь/ распаковать файл в другом каталоге.

Используйте следующую команду для достижения описанного выше сценария

sudo unzip path/filename.zip -d another_path_or_same_path

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

И если zip-файл защищен паролем, мы также можем использовать -P.

используйте команду tar в Linux / Unix

tar это аббревиатура от ленточного архива. команда tar используется для управления архивами в Linux/Unix. Системные администраторы часто используют tarcommand для копирования множества файлов или каталогов в сильно сжатый архив, который называется tarball или tar, bzip иgzip в Linux/Unix система.

синтаксис tar

tar [OPTION...] [FILE]...

Или

необходимые флаги tar

tar {-r|-t|-c|-x|-u}

дополнительные флаги tar

tar {one of the required Flags} [ -d ][-B] [ -F ] [ -E ] [ -i ] [-h ] [ -l ] [ -m ] [ -o ] [ -p ] [ -w] [ -s ] [ -U ] [ -v ][-Number] [-b Blocks] [-f Archive]

Примеры

Создайте архивный файл tar, сжав каталог или один файл

Приведенная ниже команда терминала создаст .tar файл, вызываемыйsample_dir.tar с каталогом /home/codebind/sample_dir илиsample_dir в текущем рабочем каталоге.

ripon@ripon:~$  tar -cvf sample_dir.tar sample_dirsample_dir/sample_dir/main.cppsample_dir/sample.pngsample_dir/outputripon@ripon:~$ lssample_dir sample_dir.tar

enter image description here

Вот что на самом деле означают эти флаги (-cvf)

-c, --create– создать новый архив

-x, --extract, --get– извлечение файлов из архива

-f, --file ARCHIVE– используйте архивный файл или архив устройства

Создавать tar.gz или tgz Архивируйте файл путем сжатия каталога или одного файла

Приведенная ниже команда терминала создаст .tar.gz файл, вызываемыйsample_dir.tar.gz с каталогом /home/codebind/sample_dir илиsample_dir в текущем рабочем каталоге.

Обратите внимание, что мы добавили дополнительный флаг -z в команду.Вот что на самом деле означает флаг -z

-z, --gzip, --gunzip --ungzip– Сжать архив с помощью gzip

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dirsample_dir/sample_dir/main.cppsample_dir/sample.pngsample_dir/outputripon@ripon:~$ lssample_dir sample_dir.tar.gz

enter image description here

Приведенная ниже команда создаст файл .tgz. Одно это нужно заметить istar.gz и tgz оба похожи.

ripon@ripon:~$ tar -cvzf sample_dir.tgz sample_dirsample_dir/sample_dir/main.cppsample_dir/sample.pngsample_dir/outputripon@ripon:~$ lssample_dir sample_dir.tgz

Сжатие нескольких каталогов или файлов одновременно

Допустим, например, мы хотим сжать sample_dir каталог,the java_test каталог, а также abc.py файл в tar-файл, называемыйsample_dir.tar.gz.

Выполните следующую команду для достижения вышеуказанной цели.

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dir java_test abc.pysample_dir/sample_dir/main.cppsample_dir/sample.pngsample_dir/outputjava_test/java_test/HelloCV.javaabc.pyripon@ripon:~$ lssample_dir java_test abc.py sample_dir.tar.gz

enter image description here

Создавать .bzip2 Архивируйте файл путем сжатия каталога или одного файла

ripon@ripon:~$ tar -cjvf sample_dir.tar.bz2 sample_dirsample_dir/sample_dir/main.cppsample_dir/sample.pngsample_dir/outputripon@ripon:~$ 

Обратите внимание, что мы добавили дополнительный флаг -f к команде.Вот что такое флаг -f на самом деле имею в виду

-f, --file ARCHIVE– используйте архивный файл или архив устройства

enter image description here

Извлекать .tar Архивный Файл

Мы можем извлечь или распаковать сжатый файл с помощью команды tar. Приведенная ниже команда извлечет содержимое sample_dir.tar в существующий каталог.

ripon@ripon:~$ tar -xvf sample_dir.tarsample_dir/sample_dir/main.cppsample_dir/sample.pngsample_dir/outputripon@ripon:~$ 

enter image description here

Следующая команда извлечет или распакует файлы в указанном каталоге, т.е. /home/codebind/dir_name в этом случае.

ripon@ripon:~$ tar -xvf sample_dir.tar -C /home/codebind/dir_namesample_dir/sample_dir/main.cppsample_dir/sample.pngsample_dir/outputripon@ripon:~$ 

мы добавили дополнительный флаг -C к команде.Вот что такое флаг -Cна самом деле имею в виду

-C, --directory DIR – изменить на каталог DIR

enter image description here

Извлеките все файлы из текущей папки, вы можете использовать: распаковать \*.zip

@burtsevyg обратная косая черта там не нужна. Это заставит оболочку рассматривать \* как буквальный символ звезды. Просто используйте unzip *.zip, чтобы заставить оболочку развернуть * для всех файлов, заканчивающихся на .zip

В Ubuntu уже установлено несколько инструментов сжатия / распаковки. Запустите apropos zip из консоли для получения полного списка.

Использование * в одиночку у меня не сработало. Это вызвало ошибки “имя файла не соответствует”. \* сделал свое дело.

Я рекомендую вам использовать и изучать “unar” вместо конкретного zip-файла, если вам не нужны конкретные функции. “Поддерживаемые форматы файлов включают Zip, Tar-GZIP, Tar-BZip2, RAR, 7-zip, LHA, StuffIt и многие другие старые и малоизвестные форматы”…

По теме (для файлов *.tgz): Как распаковать файл .tgz с помощью терминала?