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

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

1108 голосов | спросил ubuntu-nerd 11 SunEurope/Moscow2011-12-11T08:37:54+04:00Europe/Moscow12bEurope/MoscowSun, 11 Dec 2011 08:37:54 +0400 2011, 08:37:54

10 ответов


1527

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

sudo apt-get install unzip

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

unzip file.zip -d destination_folder
ответил Kelley 11 SunEurope/Moscow2011-12-11T08:44:10+04:00Europe/Moscow12bEurope/MoscowSun, 11 Dec 2011 08:44:10 +0400 2011, 08:44:10
187

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

Установите его: apt-get install unzip

И используйте его: unzip file.zip

ответил Panther 11 SunEurope/Moscow2011-12-11T08:41:57+04:00Europe/Moscow12bEurope/MoscowSun, 11 Dec 2011 08:41:57 +0400 2011, 08:41:57
93

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

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

sudo apt-get install p7zip-full

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

7z l zipfile.zip

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

7z x zipfile.zip
ответил Chris 14 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 14 Sep 2013 12:01:07 +0400 2013, 12:01:07
36

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

unzip file.zip -d somedir

, чтобы извлечь в yourpath/somedir

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

sudo unzip file.zip -d /somedir
ответил cristobalhdez 28 Maypm13 2013, 20:45:53
21

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

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

Python

 #!/usr/bin/env python3
import sys
from zipfile import PyZipFile
for zip_file in sys.argv[1:]:
    pzf = PyZipFile(zip_file)
    pzf.extractall()

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

./pyunzip 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
ответил Sergiy Kolodyazhnyy 2 J0000006Europe/Moscow 2017, 21:43:43
19

Если ваш пункт назначения совпадает с исходным zip-файлом, вы можете просто:

unzip filename.zip
ответил Nadeem Khan 20 MaramThu, 20 Mar 2014 10:28:06 +04002014-03-20T10:28:06+04:0010 2014, 10:28:06
13

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

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

Однако для zipping выигрывает 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.

ответил Steven Penny 2 FriEurope/Moscow2016-12-02T04:50:03+03:00Europe/Moscow12bEurope/MoscowFri, 02 Dec 2016 04:50:03 +0300 2016, 04:50:03
13

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

Command: unzip -[option] zip-path.  
               -l List archive files.  
               -t Test archive files with cyclic redundancy check.  
               -u update the existing files.  
               -z archive comment.  
ответил kashminder 14 +04002014-10-14T14:58:24+04:00312014bEurope/MoscowTue, 14 Oct 2014 14:58:24 +0400 2014, 14:58:24
1

Вот команда в случае, если вы хотите извлечь из текущего каталога

unzip <source_file_path>.zip 

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

unzip <sorce_file_path>.zip -d <destination_path>

если есть пароль, вы также можете использовать -P

unzip -P <password> <sorce_file_path>.zip 

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

sudo apt-get install unzip
ответил Soumik Debnath 1 32017vEurope/Moscow11bEurope/MoscowWed, 01 Nov 2017 20:54:25 +0300 2017, 20:54:25
0

Прежде всего вам нужно установить unzip, если он не установлен.

sudo apt-get install unzip

1 - Если файл находится в том же каталоге, в котором находится терминал, и вы хотите извлечь его в том же месте.

sudo unzip file.zip

, если файл защищен паролем:

sudo unzip -P file.zip

ans убедитесь, что это -P not -p, это другой вариант

2 - Если файл не находится в одном каталоге, и вы хотите извлечь его в другом каталоге, это терминал. используйте:

sudo unzip path/filename.zip -d anotherOrSamePath

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

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

ответил Mahmoud S. Marwad 28 AM00000090000001831 2017, 09:55:18

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

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

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