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


1413

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


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

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

Использование *одного не сработало для меня. Это вызвало filename not matchedошибки. \*сделал работу.
arman_aegit

Я рекомендую вам использовать и изучать «unar» вместо конкретного почтового индекса, если вам не нужны особые функции. «Поддерживаемые форматы файлов включают Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt и многие другие старые и малоизвестные форматы».
masterxilo

В Ubuntu уже установлено несколько инструментов сжатия / распаковки. Запустите apropos zipиз консоли полный список.
Стивен Райт

Ответы:


1927

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

sudo apt-get install unzip

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

unzip file.zip -d destination_folder

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

unzip file.zip

83
Если вы уже находитесь в каталоге, вы хотите, чтобы файл был разархивирован, пропустите 2-й и 3-й аргументы, то естьunzip /path/to/file.zip
Severo Raz

2
Я только что использовал эту команду. Это пример. Шаг 1 (я перешел в каталог, где хранится zip-файл): cd /home/paf/Copy/Programming/Javascript/Json Step2 (я извлекаю zip-файл в только что упомянутом каталоге):unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
pablofiumara

2
unzipможет быть программой по умолчанию. Другими словами, вам может не потребоваться его установка.
noobninja

2
@Aevi Проверьте справочные страницы[-d exdir] An optional directory to which to extract files.
WAKR

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

230

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

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

apt-get install unzip

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

cd /path/to/file
unzip file.zip

117

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

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

sudo apt-get install p7zip-full

Эта команда перечисляет содержимое почтового индекса:

7z l zipfile.zip

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

7z x zipfile.zip

5
7z eне сохраняет структуру каталогов - 7z xделает ...
assylias

2
13.10 говорит, что 7z не существует. Я думаю, что должно sudo apt-get установить 7zip
nitishch

6
Я думаю, что команда установки должна быть sudo apt-get install p7zipили sudo apt-get install p7zip-fullВам нужна полная версия, чтобы получить 7zкоманду. Полный также единственный, кто обрабатывает zip и другие виды форматов из двух.
Автомат

1
Не могли бы вы уточнить «Более полезный инструмент»? Вы сравниваете с распаковкой? Не могли бы вы привести примеры функций, которые делают 7z более полезным, и, возможно, в каких контекстах 7z предпочтительнее?
Дэвид Лебауэр

1
Для некоторых распаковка более полезна: удобна в использовании и ее имя запоминается.
Застенчивый Роббиани

47

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

unzip file.zip -d somedir

извлечь в yourpath/somedir

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

sudo unzip file.zip -d /somedir

39

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

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

питон

#!/usr/bin/env python3
import sys
from zipfile import PyZipFile
for 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 perl
use Archive::Extract;
foreach my $filepath (@ARGV){
    my $archive = Archive::Extract->new( archive => $filepath );
    $archive->extract;
}

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

./perlunzip master.zip

или же

perl perlunzip.pl master.zip

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


1
Спасибо, именно то, что мне нужно. У меня нет рута, и я не хочу устанавливать распаковку вручную из исходного кода. Это также можно использовать с однострочником bash, который в основном будет работать (при условии отсутствия '''внутри имени файла):unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
mxmlnkn

@mxmlnkn Рад, что смог помочь :)
Сергей Колодяжный

30

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

unzip filename.zip

На Ubuntu 17.04 -d требуется по неизвестной причине.
皞 皞

21

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

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

Однако за молнией bsdtarвыигрывает. Скажем, у вас есть этот вход:

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

и хотите это в zip-файле:

alfa/four.txt
bravo/four.txt

Это легко с bsdtar:

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

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


Как бы мне ни хотелось отдать победу инструменту для доспехов, очевидно bsdtar, не сулит ничего хорошего со специальными символами, такими как, по крайней мере, один в слове Blóðstokkinnпри распаковке. Я даже не проверял при сжатии. Что за облом : / unzipсправился без проблем.
Vrakfall

20

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

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

8

http://www.codebind.com/linux-tutorials/unzip-zip-file-using-terminal-linux-ubuntu-linux-mint-debian/ :

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

Запустите следующую команду для установки 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, файл будет извлечен для представления рабочего каталога.

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

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

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

tar Syntex

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

Или же

смола требуется Флаги

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_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar

введите описание изображения здесь

Вот что на самом деле означают эти флаги (-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.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar.gz

введите описание изображения здесь

Команда ниже создаст файл .tgz. Обратите внимание, что tar.gz и tgz похожи.

ripon@ripon:~$ tar -cvzf sample_dir.tgz sample_dirsample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tgz

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

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

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

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dir java_test abc.py
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
java_test/
java_test/HelloCV.java
abc.py
ripon@ripon:~$ ls
sample_dir java_test abc.py sample_dir.tar.gz

введите описание изображения здесь

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

ripon@ripon:~$ tar -cjvf sample_dir.tar.bz2 sample_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

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

-f, --file ARCHIVE- использовать архивный файл или устройство АРХИВ

введите описание изображения здесь

Извлечь .tarархив

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

ripon@ripon:~$ tar -xvf sample_dir.tar
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

введите описание изображения здесь

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

ripon@ripon:~$ tar -xvf sample_dir.tar -C /home/codebind/dir_name
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

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

-C, --directory DIR - перейти в каталог DIR

введите описание изображения здесь


1
Также, чтобы проверить, установлены ли zip / unzip, используйте zip -vи unzip -v. Если он установлен, он выдаст что-то вроде UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.(плюс несколько строк дополнительной информации. Если не установлен, он скажет что-то вроде The program 'zip' is currently not installed. You can install it by typing: apt install zip.
SherylHohman
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.