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

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

1433
задан 13 October 2017 в 19:29

9 ответов

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

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

sudo apt-get install p7zip-full

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

7z l zipfile.zip

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

[ 112]
0
ответ дан 13 October 2017 в 19:29

Я предпочитаю 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.

0
ответ дан 13 October 2017 в 19:29

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

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

apt-get install unzip

И используйте его:

unzip file.zip
0
ответ дан 13 October 2017 в 19:29

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

unzip filename.zip
0
ответ дан 13 October 2017 в 19:29

Используя сценарии инструментов: 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.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

См. также

40
ответ дан 13 October 2017 в 19:29

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

Command: unzip -[option] zip-path.
               -d an optional directory to which to extract files  
               -l List archive files.
               -P password Use password to decrypt encrypted zipfile entries (if any).
               -t Test archive files with cyclic redundancy check.  
               -u Update the existing files.  
               -z archive comment
0
ответ дан 13 October 2017 в 19:29

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

sudo apt-get install unzip

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

unzip file.zip -d destination_folder
0
ответ дан 13 October 2017 в 19:29

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

unzip file.zip -d somedir

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

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

sudo unzip file.zip -d /somedir
0
ответ дан 13 October 2017 в 19:29

Install unzip

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

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

sudo apt-get install unzip

unzip Syntex

$ 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 в Linux / Unix

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

tar Syntex

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

Или

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

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

tar необязательно Flags

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

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

enter image description here

Команда ниже создаст файл .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

enter image description here

Создать .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

enter image description here

Извлечь .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:~$ 

enter image description here

Следующая команда извлечет или отменит файлы в указанном каталоге, т.е. в этом случае /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

enter image description here [тысяча сто пятьдесят шесть]

0
ответ дан 13 October 2017 в 19:29

Другие вопросы по тегам:

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