Як розпакувати Zip-файл із Терміналу?


1413

Щойно завантажив .zip файл з Інтернету. Я хочу використовувати термінал для розпакування файлу. Який правильний спосіб це зробити?


3
Витягнути всі файли з поточної папки, ви можете використовувати: unzip \ *. Zip
burtsevyg

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

Використання в *поодинці не працює для мене. Це спричинило filename not matchedпомилки. \*зробив роботу.
arman_aegit

Я рекомендую використовувати та вивчити "unar" замість конкретного zip, якщо вам не потрібні конкретні функції. "Підтримувані формати файлів включають Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt та багато інших старих і неясних форматів."
masterxilo

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

Відповіді:


1926

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

sudo apt-get install unzip

Після встановлення утиліти 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 (я unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
витягую

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

Ця команда перераховує вміст zip:

7z l zipfile.zip

Ця команда витягує вміст zip:

7z x zipfile.zip

5
7z eне зберігає структуру каталогу - 7z xробить ...
assylias

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

6
Я думаю, що команда встановлення повинна бути sudo apt-get install p7zipабо sudo apt-get install p7zip-fullВам потрібна повна версія для отримання 7zкоманди. Повний також є єдиним, хто обробляє zip та інші види форматів з двох.
Automatico

1
ви могли б уточнити "Більш корисний інструмент"? Ви порівнюєте розпакувати? Чи можете ви надати якісь приклади функцій, які роблять 7z більш корисним, і, можливо, у яких контекстах 7z є кращим?
David LeBauer

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
Дякую, саме те, що мені потрібно. У мене немає root і не хочу встановлювати розпакування вручну з джерела. Це також можна використовувати з однофайловим bash, який здебільшого буде працювати (при '''unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
умові

@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можливості, як розпакувати, тому у вас немає способу досягти вищезазначеного, якщо ви не cdспочатку.


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

20

Ось детальний опис варіантів, які мені здаються корисними:

Команда: unzip - [параметр] zip-path.
               -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 ============= Отже, насамперед нам потрібно встановити unzip у нашій системі, якщо вона не встановлена. команда unzip використовується для вилучення файлів із архіву ZIP.

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

sudo apt-get install unzip

unzip Синтекс

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

Тепер виконайте наведені нижче дії.

UnZip File

ВАРІАНТ 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 Command в Linux / Unix

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

дьоготь Syntex

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

Або

дьоготь необхідний Прапори

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

смол необов’язково Прапори

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- використовувати архівний файл або пристрій 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- використовувати архівний файл або пристрій 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:~$ 

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

Наступна команда буде витягувати або Untar файли у вказаному каталогу, тобто /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.