- Команды Zip и Unzip в Linux
- Предпосылки
- Установка Zip и разархивирования
- Команда ZIP в Linux
- Заархивировать один файл
- Заархивировать несколько файлов
- Заархивируйте файл в другой каталог
- Добавить файл в существующий zip-архив
- Удалить файл из ZIP-файла
- Архивировать файлы в тихом режиме
- Удаление исходных файлов после архивирования
- Почтовые каталоги
- Установка уровня сжатия
- Создайте защищенный паролем zip-файл
- Добавление паролей к zip-файлам с помощью zipcloak
- Просмотр сведений о файле с помощью команды zipdetails
- Найдите внутри файла с помощью команды zipgrep
- Просмотр информации с помощью команды zipinfo
- Разделите файл с помощью команды zipsplit
- Добавляйте или просматривайте комментарии в zip-файле с zipnote
- Remove single file from zip archive on Linux
- 1 Answer 1
Команды Zip и Unzip в Linux
Zip — популярная кроссплатформенная команда, используемая для сжатия и архивирования данных. Сжатие экономит место за счет уменьшения размера данных, в то время как архивирование упрощает передачу данных за счет объединения нескольких файлов или каталогов в один файл. Представьте, если нам нужно передать через Интернет 5 файлов, каждый размером 50 мегабайт; передача всех файлов по одному может занять много времени. Сжатие файлов для уменьшения размера до 25 МБ и последующее архивирование всех их в одном файле значительно ускорит передачу файлов, чем в несжатом виде. Zip — это наиболее широко используемая утилита для архивирования и сжатия файлов, в то время как unzip используется для извлечения и распаковки заархивированных файлов.
В этой статье мы рассмотрим команды zip и unzip в Linux, а также их параметры командной строки и примеры.
Предпосылки
Примечание: Команды, упомянутые в этой статье, были протестированы на Ubuntu 20.04 LTS (фокальная ямка). Те же команды применимы и к дистрибутиву Debian.
Установка Zip и разархивирования
По умолчанию в системах Ubuntu установлены пакеты zip и unzip. Если они отсутствуют в вашей системе, вы можете легко их установить. Запустите Терминал с помощью клавиатуры Ctrl + Alt + T. Затем, чтобы установить zip, введите в Терминале следующее:
Чтобы установить распаковку, введите в Терминале следующую команду:
$ sudo apt install распаковать
Есть несколько сценариев, в которых вам может потребоваться заархивировать файлы:
- Для экономии места на диске, так как при сжатии размер файла сжимается
- Передача больших файлов по электронной почте
- Выгрузка или скачивание файлов на более высокой скорости
- Для экономии трафика
Команда ZIP в Linux
Чтобы создать zip-файл, вам нужно будет указать имя заархивированного архива и файлы, которые необходимо включить в zip-архив.
$ zip options zip_file file1 file2…
Заархивировать один файл
Чтобы заархивировать один файл с именем тестовый файл.текст; в zip-файл с именем контрольная работа.застегивать, команда будет такой:
$ zip test.zip testfile.текст
Приведенная выше команда сжимает указанный файл в текущем каталоге, оставляя исходный файл позади.
Чтобы убедиться, что zip-файл был создан, введите команду в Терминале ниже:
Заархивировать несколько файлов
Вы также можете заархивировать несколько файлов с помощью команды zip. Создадим несколько файлов с именем testfile1.текст, testfile2.текст, testfile3.текст, а также testfile4.текст используя следующую команду в Терминале:
$ sudo touch testfile1.txt testfile2.txt testfile3.txt testfile4.текст
Теперь, чтобы заархивировать эти файлы в один файл с именем файлы.застегивать, введите следующую команду в Терминале:
$ zip файлы.zip testfile1.txt testfile2.txt testfile3.txt testfile4.текст
Вы также можете использовать подстановочный знак, чтобы указать несколько файлов с одинаковым расширением. Например, чтобы заархивировать все файлы, заканчивающиеся на .txt в zip-файле с именем files1.zip, введите в Терминале следующую команду:
Заархивируйте файл в другой каталог
Если вам нужно заархивировать файл в какой-либо каталог, отличный от текущего, используйте следующий синтаксис:
$ zip / путь / к / каталогу.zip_file имя файла
Например, застегнуть тестовый файл.текст файл в каталог Documents / docs / с именем контрольная работа.застегивать, команда будет такой:
$ zip Documents / docs / test.zip testfile.текст
Добавить файл в существующий zip-архив
Вы также можете добавить файл в уже существующий zip-файл. Для этого используйте следующий синтаксис:
Допустим, у вас есть zip-файл (files1.застегивать), И вы хотите включить еще один файл (testfile4.текст) В этом случае команда будет выглядеть так:
$ zip -u файлы1.zip testfile4.текст
Удалить файл из ZIP-файла
Точно так же вы также можете удалить файл из уже существующего zip-файла. Для этого используйте следующий синтаксис:
Допустим, у вас есть zip-файл (files1.застегивать), И вы хотите удалить файл (testfile1.текст), Команда в этом случае будет такой:
$ zip -d файлы1.zip testfile1.текст
Архивировать файлы в тихом режиме
Если вы не хотите отображать вывод команды zip, используйте параметр -q (quiet) с командой zip следующим образом:
Например, при архивировании тестового файла.txt, вы можете подавить вывод с помощью следующей команды:
$ zip -q тест.zip testfile.текст
На следующем снимке экрана вы можете увидеть выходные данные команды zip, которые не отображались в Терминале.
Удаление исходных файлов после архивирования
По умолчанию zip сохраняет исходный файл вместе со сжатым файлом. Однако с помощью -м с помощью команды zip, вы можете удалить исходные файлы после создания их заархивированного файла.
Например, следующая команда удалит тестовый файл.текст после создания заархивированного файла, контрольная работа.застегивать.
$ zip -m тест.zip testfile.текст
Почтовые каталоги
Чтобы заархивировать каталоги в вашей системе Linux, используйте -р (рекурсивный) вариант с помощью команды zip. В -р опция рекурсивно заархивирует каталоги, я.е., включая содержимое подкаталогов.
$ zip -r имя_директора zip_file
Например, чтобы застегнуть Документы каталог рекурсивно в контрольная работа.застегивать файл, команда будет выглядеть так:
Эта команда заархивирует каталог Documents вместе со всеми подкаталогами и файлами, включенными в него.
Установка уровня сжатия
Вы также можете установить уровень сжатия, который будет применяться к архивируемым файлам. Уровень сжатия варьируется от 0 до 9, где 6 — значение по умолчанию, 0 — самое низкое значение, а 9 — самое высокое значение сжатия.
Например, чтобы заархивировать все текстовые файлы в files1.застегивать используя максимальное значение сжатия, команда будет выглядеть так:
Аналогичным образом, чтобы заархивировать все текстовые файлы в файлы2.застегивать с использованием самого низкого значения сжатия -0, команда будет такой:
Ниже приводится результат работы ls команда после создания zip-файлов. Если мы сравним размеры обоих zip-файлов, вы увидите files1.zip, сжатый с использованием уровня сжатия 9, имеет меньший размер по сравнению с файлами2.zip, сжатый с использованием уровня сжатия 0.
Создайте защищенный паролем zip-файл
Вы также можете создавать zip-файлы, защищенные паролем, с помощью -е вариант с помощью команды zip следующим образом:
Например, следующая команда заархивирует все текстовые файлы в файлы3.застегивать, затем спросите пароль. Установите любой пароль и нажмите Enter. Затем проверьте этот пароль, повторно набрав его и нажав Enter.
Добавление паролей к zip-файлам с помощью zipcloak
В предыдущем примере мы создали zip-файл, защищенный паролем. Но что делать, если вы создали zip-файл и забыли установить пароль. С помощью команды zipcloak вы можете установить пароль для zip-файла в любое время.
Например, чтобы установить пароль для уже созданного zip-файла с именем файлы.застегивать, команда будет такой:
Вам будет предложено ввести пароль. Введите любой пароль и нажмите Входить. Затем подтвердите этот пароль, набрав его еще раз и нажав Входить.
Просмотр сведений о файле с помощью команды zipdetails
Команда Zipdetails показывает подробную информацию о заархивированном файле. Информация, которую он отображает, касается структуры записи, а не сжатых данных. Чтобы найти подробную информацию о заархивированном файле, введите zipdetails, а затем имя заархивированного файла, как показано ниже:
Например, чтобы найти подробную информацию о заархивированном файле, контрольная работа.застегивать, команда будет такой:
На выходе вы увидите много информации о вашем заархивированном файле.
Найдите внутри файла с помощью команды zipgrep
Команда zipgrep позволяет нам искать заданный текст в файлах внутри заархивированного файла, не извлекая его. Если zip-файл защищен паролем, вам нужно сначала ввести для него пароль. Для поиска текста внутри zip-файла используйте следующий синтаксис:
$ zipgrep выражение zip_file
Например, для поиска файлов внутри zip-файла контрольная работа.застегивать содержит слово шлюз, команда будет такой:
Тест шлюза $ zipgrep.застегивать
Результат выглядит следующим образом. Вы можете увидеть два файла iplist.текст а также iplist внутри контрольная работа.застегивать содержит слово шлюз.
Чтобы найти текст из определенного файла внутри zip-файла, вы также можете добавить его:
$ zipgrep выражение zip_file имя_файла
Например, следующая команда будет искать слово шлюз только из определенного файла iplist внутри zip файла контрольная работа.застегивать:
Тест шлюза $ zipgrep.zip Document / docs / iplist
Просмотр информации с помощью команды zipinfo
Команда zipinfo в Linux выводит список файлов, содержащихся в zip-файле, вместе с их разрешениями, типом сжатия, исходным размером, датой и отметкой времени. Чтобы просмотреть информацию о конкретном zip-файле, введите zipinfo, а затем имя файла, как показано ниже:
Следующая команда отобразит информацию о zip-файле files1.застегивать:
Разделите файл с помощью команды zipsplit
Иногда размер zip-файла слишком велик, и вы не можете загрузить его или отправить как вложение из-за ограничений по размеру. С помощью команды zipsplit вы можете разделить zip-файлы на файлы меньшего размера, которые легче перенести. Чтобы разделить zip-файл на файлы меньшего размера, размером не более , синтаксис будет таким:
В максимальный размер разделенных файлов.
Например, приведенная ниже команда разделит контрольная работа.застегивать на файлы меньшего размера размером не более 104857600 байт (104 МБ).
$ zipsplit -n 104857600 тест.застегивать
Вот результат выполнения вышеуказанной команды. В контрольная работа.застегивать файл разбит на три файла, которые последовательно называются test1.застегивать, test2.застегивать, а также test3.застегивать, соответственно.
Если вы запустите ls вы увидите все три разделенных zip-файла вместе с исходным zip-файлом.
Добавляйте или просматривайте комментарии в zip-файле с zipnote
С помощью команды zipnote вы можете добавлять, просматривать и редактировать комментарии в вашем zip-файле. Для просмотра комментариев используйте следующую команду:
Заменить застегивать файл с вашим фактическим именем zip-файла.
Если комментариев нет, вы увидите следующее представление по умолчанию:
Чтобы добавить комментарии, сначала вам нужно перенаправить вывод почтовый индекс к файлу комментариев. Для этого используйте следующую команду:
$ zipnote zip_file> комментарии
Например, чтобы добавить комментарии к files1.застегивать, команда будет такой:
$ zipnote files1.zip> комментарии
Теперь отредактируйте Комментарии файл, используя следующую команду:
Для каждого файла добавьте свои комментарии над строками, в которых говорится @ (комментарий над этой строкой),затем сохраните и выйдите из файла. Мы добавили два комментария в файл комментариев, как показано на скриншоте ниже.
Теперь напишите комментарии к вашему zip-файлу с помощью следующей команды:
Свежие статьи об операционных системах. Множество интересных гайдов и полезных советов. Почувствуйте себя своим в мире современных технологий
Remove single file from zip archive on Linux
I have a zip archive (created automatically in a script with -j -r flags) and I would like to remove a single file from it. I tried as documented.
zip -d "picture_43_9.jpg" gallery.zip
zip warning: picture_43_9.jpg not found or empty zip error: Nothing to do! (picture_43_9.jpg)
unzip -l . /gallery.zip | grep -i 43_9.jpg 1477092 2013-05-22 14:23 picture_43_9.jpg
1 Answer 1
You have the arguments swapped. Try this:
zip -d gallery.zip "picture_43_9.jpg"
-d
—delete
Remove (delete) entries from a zip archive. For example:zip -d foo foo/tom/junk foo/harry/\* \*.o
will remove the entry foo/tom/junk , all of the files that start with foo/harry/ , and all of the files that end with .o (in any path). Note that shell pathname expansion has been inhibited with backslashes, so that zip can see the asterisks, enabling zip to match on the contents of the zip archive instead of the contents of the current directory. (The backslashes are not used on MSDOS-based platforms.) Can also use quotes to escape the asterisks as in
zip -d foo foo/tom/junk «foo/harry/*» «*.o»
Not escaping the asterisks on a system where the shell expands wildcards could result in the asterisks being converted to a list of files in the current directory and that list used to delete entries from the archive.
Under MSDOS, -d is case sensitive when it matches names in the zip archive. This requires that file names be entered in upper case if they were zipped by PKZIP on an MSDOS system. (We considered making this case insensitive on systems where paths were case insensitive, but it is possible the archive came from a system where case does matter and the archive could include both Bar and bar as separate files in the archive.) But see the new option -ic to ignore case in the archive.