Только что скачал .zip файл из интернета. Я хочу использовать терминал, чтобы распаковать файл. Как правильно это сделать?
Более полезным инструментом является 7z
, который позволяет сжать и разархивировать ряд форматов сжатия, в частности lzma
, обычно протокол, предлагающий самые высокие степени сжатия.
Эта команда устанавливает 7z
:
sudo apt-get install p7zip-full
Эта команда перечисляет содержимое zip:
7z l zipfile.zip
Эта команда извлекает содержимое zip:
[ 112] Я предпочитаю 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
.
Вы можете просто использовать unzip
.
Установите его:
apt-get install unzip
И используйте его:
unzip file.zip
Если каталоги источника и назначения совпадают, вы можете просто сделать:
unzip filename.zip
Много ответов здесь упоминают инструменты, которые требуют установки, но никто не упомянул, что два из языков сценариев 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
#!/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
См. также
Вот подробное описание опций, которые я считаю полезными:
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
Если команда unzip
еще не установлена в вашей системе, запустите:
sudo apt-get install unzip
После установки утилиты unzip, если вы хотите извлечь из определенной папки назначения, вы можете использовать :
unzip file.zip -d destination_folder
Вы можете использовать:
unzip file.zip -d somedir
для извлечения в yourpath/somedir
Если вы хотите извлечь в абсолютный путь, используйте
sudo unzip file.zip -d /somedir
Итак, прежде всего нам нужно установить unzip в нашу систему, если она не установлена. Команда unzip используется для извлечения файлов из ZIP-архива.
Выполните следующую команду для установки unzip
sudo apt-get install unzip
unzip
Syntex
$ 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
является аббревиатурой от 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
Вот что на самом деле означают эти флаги (-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
- используйте архивный файл или устройство 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