Unzip windows file linux

Как использовать Unzip в Linux

Архивирование и разархивирование файлов упрощает множество сложных задач, таких как передача файлов! В этом руководстве вы узнаете, как использовать unzip в Linux для улучшения рабочего процесса VPS!

Zip — это часто используемая функция сжатия, которая портативна и проста в использовании. Вы даже можете распаковать в Windows файлы, созданные в Linux!

Unzip — это утилита, которая по умолчанию недоступна в большинстве разновидностей Linux, но ее легко установить. Создавая файлы .zip, вы можете соответствовать сжатию файлов .tar.gz!

Ниже приведены несколько сценариев, в которых вы можете использовать zip-файлы:

  • Когда вы часто работаете между системами на базе Windows и Unix. Это не только сжимает файлы, но также является служебной программой для создания пакетов файлов. Работает на нескольких операционных системах
  • Чтобы сэкономить трафик. Если у вас ограниченная или ограниченная пропускная способность, тогда zip может использоваться между двумя серверами для передачи файлов.
  • Передает файлы быстро. Утилита Zip уменьшает размер файла, что сокращает время передачи
  • Загружайте или скачивайте каталоги на более высокой скорости
  • Экономьте место на диске
  • Разархивируйте защищенные паролем файлы .zip
  • Наслаждайтесь хорошей степенью сжатия

Помните, что прежде чем использовать Unzip в Linux, вам необходимо подключиться к серверу VPS по SSH.

Системы Debian и Ubuntu

Установить unzip очень просто! В Ubuntu и Debian используйте команду ниже для установки unzip:

Устройтесь поудобнее и подождите минуту, пока установка не будет завершена.

Чтобы создать zip-файлы, вам также необходимо установить zip. Вы можете сделать это с помощью следующей команды:

Установите Unzip в Linux CentOS и Fedora

Это снова просто и может быть выполнено с помощью следующей команды:

После завершения установки вы можете проверить путь с помощью следующей команды:

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

Вы также можете убедиться, что все установлено правильно, используя команду ниже. Это даст подробный отчет с подробностями утилиты распаковки.

Как использовать Zip и Unzip в Linux

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

Читайте также:  Canon mf421dw драйвер linux

Создание Zip-файлов в Linux

Базовый синтаксис для создания файла .zip:

zip options zipfile list_Of_files

Чтобы проверить это, мы создали два файла — ExampleFile.txt и ExampleFile1.txt . Мы сжимаем их в sampleZipFile.zip с помощью следующей команды:

zip sampleZipFile.zip ExampleFile.txt ExampleFile1.txt

Использование Linux для распаковки файла

Команду unzip можно использовать без каких-либо параметров. Это распакует все файлы в текущий каталог. Один из таких примеров показан ниже:

По умолчанию он будет распакован в текущую папку, если у вас есть доступ для чтения и записи.

Удалить файл из файла .zip

После создания файла .zip вы можете удалять или удалять файлы в нем. Итак, если вы хотите удалить ExampleFile.txt из существующего sampleZipFile.zip , вы можете использовать следующую команду:

zip –d sampleZipFile.zip ExampleFile.txt

После выполнения этой команды вы можете распаковать ZIP-файл, используя:

Здесь вы обнаружите, что файл ExampleFile.txt был удален и не отображается при извлечении.

Как обновить Zip-файлы

После создания файла .zip вы можете добавить новый файл к существующему файлу .zip. Предположим, необходимо добавить новый файл ExampleFile2.txt в уже существующий файл sampleZipFile.zip . Вы можете сделать это с помощью команды, показанной ниже:

zip –u sampleZipFile.zip ExampleFile2.txt

Теперь, если вы извлечете файл sampleZipFile.zip , вы обнаружите, что к нему добавлен новый файл ExampleFile2.txt.

Переместить файл в ZIP-архив

Вы можете легко переместить определенные файлы в zip-архив. Это означает, что после добавления файлов они будут удалены из исходных каталогов. Это в основном используется, когда у вас большой файл или каталог, но вам нужно сэкономить место на диске. Это делается путем добавления опции -m . Пример этой команды:

zip –m sampleZipFile.zip ExampleFile2.txt

Рекурсивное использование Zip в Linux

Параметр -r используется для рекурсивного архивирования файлов. Эта опция сжимает все файлы, находящиеся в папке. Пример такой команды показан ниже:

zip –r sampleZipFile.zip MyDirectory

В этом примере MyDirectory — это каталог, содержащий несколько файлов и подкаталогов для архивирования.

Исключить файлы из ZIP-архива

При создании файла .zip вы можете исключить ненужные файлы. Это делается с помощью опции -x . Ниже приведен пример:

zip -x sampleZipFile.zip ExampleFile.txt

Здесь ExampleFile.txt не будет добавлен в sampleZipFile.zip .

Распаковать в другой каталог

Если вы не хотите распаковывать в текущий каталог, но хотите указать местоположение каталога, это также можно сделать. Используйте параметр -d, чтобы указать путь к каталогу в команде unzip. Пример такой команды показан ниже:

unzip sampleZipFile.zip -d /usr/sampleZip/ExampleDir

Используйте Linux Unzip с несколькими Zip-файлами

Если вы хотите распаковать несколько zip-файлов, существующих в вашем текущем рабочем каталоге, вы можете использовать команду, как показано ниже:

Эта команда распакует все отдельные zip-файлы.

Подавить вывод при использовании распаковки в Linux

По умолчанию, когда мы используем команду unzip, она печатает список всех извлекаемых файлов. Распечатывается краткое описание процесса экстракции. Если вы хотите подавить эти сообщения, вы можете использовать опцию -q . Команда будет такой, как показано ниже:

Читайте также:  Linux pppoe server настройка

Исключение файлов с помощью Unzip в Linux

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

unzip sampleZipFile.zip -x excludedFile.txt

Здесь команда распакует все файлы, кроме excludedFile.txt .

Вы также можете предотвратить извлечение файлов определенных типов. Один из таких примеров показан ниже:

unzip sampleZipFile.zip -x "*.png/*"

Вышеупомянутая команда исключит из извлечения все файлы .png.

Использование Unzip в Linux с файлами, защищенными паролем

Защищенный паролем файл .zip можно распаковать с помощью параметра -P. Пример такой команды показан ниже:

unzip -P Password sampleZipFile.zip

В приведенной выше команде Пароль будет паролем для файла .zip.

Замена Zip-файлов

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

Варианты будут такими, как показано ниже:

Вы можете переопределить эти файлы, используя параметры -o . Один из таких примеров показан ниже:

Следует соблюдать осторожность при выполнении этой команды, поскольку это полностью перезапишет существующие копии. Любые изменения, внесенные в предыдущую копию, будут перезаписаны.

Использование Linux Unzip без перезаписи файлов

Если вы разархивировали файл и внесли некоторые изменения, но случайно удалили несколько файлов, вы можете использовать этот подход для его восстановления! Используйте параметр -n, чтобы пропустить извлечение, если файл уже существует. Таким образом, будут извлечены только файлы, которые не существуют. Пример такой команды:

Как вывести список содержимого ZIP-архива в Linux

Параметр -l перечислит все файлы в ZIP-архиве с отметкой времени и другими основными деталями. Пример такой команды:

Источник

Convert a Windows-created ZIP to Linux (internal paths issue)

I have a .zip created on a Windows machine (outside of my control). The zip file contains paths that I need to preserve when I unzip. However, when I unzip, all files end up like:
unzip_dir/\window\path\separator\myfile.ext I’ve tried both, with and without -j option. My issue is that I need that path information under \window\path\separator\ . I need that file structure to be created when I unzip. I can mv the file and flip the \ to / easily enough in a script, but then there are errors that the destination path directories do not exist. My workaround for now is to mkdir -p the paths (after converting \ to / ) and then cp the files to those paths. But there are a lot of files, and these redundant mkdir -p statements for every file really slows things down. Is there any more elegant way to convert a zip file with Windows paths to Linux paths?

Читайте также:  Linux ubuntu настройка wine

Go Back to Windows. Tell whoever creates the Zip File not to use the Native Zip Interface, but a program like 7-Zip, and have them create a tar file. If that can’t be done you need to unzip the files while ignoring the path, using the unzip -j -d options. See Forcing Unzip — No Paths

Even with -j , I still get filename \window\path\separator\myfile.ext cause Linux/Zip don’t treat it as a paths. And I have absolutely no control over the zip file creation.

I have a hunch, that the zip file creator is using the native Windows Zip Interface, i.e, create an empty file and then adding files into the zip file. This method is not portable, as you have discovered. You need to use a program like WinZip or 7-Zip that has a CLI, like Anton used below. I just tried to use Zip.exe and got not recognized .

7 Answers 7

Use 7z rn to rename the files within the archive so that they have a forward slash. Then when you extract the archive, directories will be created.

To rename the files, list the paths of the files within the archive containing slashes, and generate a list of replacement strings that change the backslash to a slash using awk , for example.

7z rn windows.zip $(7z l windows.zip | grep '\\' | awk '< print $6, gensub(/\\/, "/", "g", $6); >' | paste -s) 

I think something went wrong with the creation of the zip file, because when I create a zip file on Windows is has (portable) forward slashes:

zip.exe -r pip pip updating: pip/ (244 bytes security) (stored 0%) adding: pip/pip.log (164 bytes security) (deflated 66%) 

But now that you have the files with file names that contain «paths» with backslashes, you can run the following program in unzip_dir :

#! /usr/bin/env python # already created directories, walk works topdown, so a child dir # never creates a directory if there is a parent dir with a file. made_dirs = set() for root, dir_names, file_names in os.walk('.'): for file_name in file_names: if '\\' not in file_name: continue alt_file_name = file_name.replace('\\', '/') if alt_file_name.startswith('/'): alt_file_name = alt_file_name[1:] # cut of starting dir separator alt_dir_name, alt_base_name = alt_file_name.rsplit('/', 1) print 'alt_dir', alt_dir_name full_dir_name = os.path.join(root, alt_dir_name) if full_dir_name not in made_dirs: os.makedirs(full_dir_name) # only create if not done yet made_dirs.add(full_dir_name) os.rename(os.path.join(root, file_name), os.path.join(root, alt_file_name)) 

This handles files in any directory under the directory from where the program is started. Given the problem that you describe, the unzip_dir probably doesn’t have any subdirectories to start with, and the program could just walk over the files in the current directory only.

Источник

Оцените статью
Adblock
detector