Если у вас есть сжатый файл, вы можете разархивировать его в командной строке Linux. Команда unzip в Linux довольно универсальна, и вы можете использовать ее намного больше, чем просто распаковка zip-файла.
Мы обсуждали, как сжать папку в Linux в прошлых статьях. Пришло время увидеть различные варианты использования команды unzip. Перед тем, как сделать это, убедитесь, что в вашей системе установлен unzip. Вы можете использовать менеджер пакетов вашего дистрибутива для установки команды.
В Ubuntu и Debian вы можете использовать эту команду:
sudo apt install unzip
После того, как вы убедились в этом, давайте посмотрим, как использовать unzip в терминале Linux.
Команда unzip имеет очень простой синтаксис:
unzip [option] zip_file
Если вы используете его для распаковки zip-файла без какой-либо опции, он извлечет все файлы в текущем каталоге:
unzip prontolingua.zip Archive: prontolingua.zip inflating: 339252-PAJF05-394.ai inflating: 339252-PAJF07-322.eps inflating: 339252-PALBTI-224.ai inflating: 339252-PALBTL-394.eps inflating: 339252-PALBTM-53.jpg inflating: Cacio e pepe.txt inflating: Isola Capri.txt
Мы думаем что это не то, что вы хотели бы. Эта команда без параметров просто заполнит ваш текущий каталог всеми извлеченными файлами.
ls 339252-PAJF05-394.ai 339252-PALBTI-224.ai 339252-PALBTM-53.jpg 'Isola Capri.txt' 339252-PAJF07-322.eps 339252-PALBTL-394.eps 'Cacio e pepe.txt' prontolingua.zip
Ожидаемое поведение – файлы должны быть извлечены в определенный каталог, обычно с тем же именем, что и файл zip.
Вы можете указать целевой каталог, в который вы хотите извлечь файлы.
unzip -d target_directory zip_file
Если целевой каталог не существует, он будет создан. Вы не можете создавать вложенные каталоги таким образом.
Обратите внимание, что вы также можете поместить целевой каталог в конец, но не все опции могут быть добавлены в конце.
unzip zip_file -d target_directory
Если вы хотите увидеть, что содержит zip-файл, вам не всегда нужно сначала его извлекать. Вы можете использовать опцию -l, и она покажет содержимое zip-файла.
unzip -l zip_file
Как видите, она также показывает временную метку файлов и фактический размер отдельных файлов в байтах.
terminator@andreyex:$ unzip -l prontolingua.zip Archive: prontolingua.zip Length Date Time Name --------- ---------- ----- ---- 205358 2019-09-12 23:14 339252-PAJF05-394.ai 996906 2019-09-12 23:14 339252-PAJF07-322.eps 213968 2019-09-27 00:00 339252-PALBTI-224.ai 1005362 2019-09-27 00:00 339252-PALBTL-394.eps 305531 2019-09-27 00:00 339252-PALBTM-53.jpg 1462 2019-09-27 09:45 Cacio e pepe.txt 1116 2019-09-27 09:45 Isola Capri.txt --------- ------- 2729703 7 files
Если вы хотите, вы можете получить больше информации, такую как сжатый размер, степень сжатия, используя подробный режим с опцией -v. CRC-32 на выходе – это проверка циклическим избыточным кодом.
terminator@andreyex:$ unzip -v prontolingua.zip Archive: prontolingua.zip Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 205358 Defl:N 142097 31% 2019-09-18 23:14 792f2380 339252-PAJF05-394.ai 996906 Defl:N 221228 78% 2019-09-18 23:14 440390d3 339252-PAJF07-322.eps 213968 Defl:N 147568 31% 2019-09-20 00:00 cdb64dfc 339252-PALBTI-224.ai 1005362 Defl:N 226727 77% 2019-09-20 00:00 aed3d97a 339252-PALBTL-394.eps 305531 Defl:N 183363 40% 2019-09-20 00:00 e4ced90f 339252-PALBTM-53.jpg 1462 Defl:N 728 50% 2019-09-20 09:45 0eb9e17b Cacio e pepe.txt 1116 Defl:N 558 50% 2019-09-20 09:45 165dd84e Isola Capri.txt -------- ------- --- ------- 2729703 922269 66% 7 files
Если в каталоге, в который вы извлекаете файлы, уже есть файлы с таким же именем, вы будете перезаписывать каждый такой файл. Вы можете принудительно перезаписать все файлы с опцией -o.
unzip -o -d target_directory zip_file
Если вы не хотите, чтобы какой-либо существующий файл был перезаписан вновь извлеченными файлами, используйте опцию -n (означает никогда не перезаписывать).
unzip -n -d target_directory zip_file
Это немного отличается от перезаписи всех файлов. В этом случае будут перезаписаны только те файлы, которые имеют более новую временную метку, чем существующие файлы. Если файл не существует, он будет создан.
Вы можете добиться этого с помощью опции -u:
unzip -u -d target_directory zip_file
Небольшое изменение по сравнению с предыдущим примером. В этом примере он будет обновлять существующие файлы, если у них более старая временная метка, но не будет создавать новые файлы, даже если они не существуют.
Опция -f позволяет вам сделать это:
unzip -f -d target_directory zip_file
Когда вы распаковываете файл, он показывает все файлы, которые были извлечены на экране. Теперь представьте zip-файл, содержащий сотни файлов. Если вы извлечете его, ваш экран будет загроможден выводом.
Вы можете использовать тихий режим с опцией -q и вы не увидите ничего на дисплее:
unzip -q -d target_directory zip_file
Вы также можете исключить определенные файлы или файлы определенного типа из извлечения.
unzip zip_file -x file_to_exclude
Допустим, в нашем примере мы не хотим извлекать файлы .eps.
terminator@andreyex:$ unzip prontolingua.zip -x *.eps Archive: prontolingua.zip inflating: 339252-PAJF05-394.ai inflating: 339252-PALBTI-224.ai inflating: 339252-PALBTM-53.jpg inflating: Cacio e pepe.txt inflating: Isola Capri.txt
Это были некоторые из наиболее распространенных примеров команды unzip в Linux. Вы всегда можете проверить его справочную страницу, чтобы узнать больше вариантов.
Вы часто используете какой-либо другой вариант с unzip? Почему бы не поделиться этим с нами в комментариях?