Разархивировать несколько архивов linux

Содержание
  1. массовая распаковка zip .нужна помощь.
  2. Команда Linux unzip
  3. Есть несколько способов разархивировать файлы с помощью этой команды
  4. Распаковать отдельные ZIP-файлы
  5. Распаковать несколько файлов ZIP
  6. Исключить некоторые ZIP-файлы
  7. Извлечь ZIP-файл в другой каталог
  8. Как показать содержимое сжатого Zip-файла
  9. Как проверить, является ли ZIP-файл действительным
  10. См. Подробную информацию в файле ZIP
  11. Распакуйте ZIP-файл без создания каталогов
  12. Распакуйте ZIP-файл без запроса перезаписи
  13. Извлечение защищенных паролем ZIP-файлов
  14. Разархивируйте файл, не отображая вывод
  15. Как разархивировать многочастный (составной) ZIP на Linux?
  16. unixforum.org
  17. Распаковать множество архивов *.tar.gz (В папке больше 30 архивов. как все одним махом распаковать?)
  18. Распаковать множество архивов *.tar.gz
  19. Re: Распаковать множество архивов *.tar.gz
  20. Re: Распаковать множество архивов *.tar.gz
  21. Re: Распаковать множество архивов *.tar.gz
  22. Re: Распаковать множество архивов *.tar.gz
  23. Re: Распаковать множество архивов *.tar.gz
  24. Re: Распаковать множество архивов *.tar.gz
  25. Re: Распаковать множество архивов *.tar.gz
  26. Архивирование файлов в Linux
  27. Архивирование в Linux
  28. Сжатие архивов в Linux
  29. Выводы

массовая распаковка zip .нужна помощь.

вообщем задача такая.

нужно массово распаковать zip архивы,но сложность состоит в том что они находятся в разных директориях.
то есть корень выглядит из папок по алфавиту (a-b-c. )
в каждой папке имеются еще несколько папок (abc — afc — . )
а вот уже собственно в них по одному .zip архиву

задача нужно массово распаковать эти архивы.

возможно ли это сделать без геморроя в виде распаковки каждого отдельно?

возможно ли это сделать без геморроя в виде распаковки каждого отдельно?

Нет, zip не умеет распаковывать более одного архива за раз.

ABS тебе в руки

find /path/to/ -type f -name ‘*.zip’ -execdir unzip <> +

Нет, zip не умеет распаковывать более одного архива за раз.

Умеет, но нужно экранировать *, т.е. unzip \*.zip

ничто не противоречит плюсу. и маны это подтверждают.

Но ‘;’ в данном случае все же идиоматичнее.

молчал бы уж — за умного сошёл.

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

ман поиск. патчи unzip

Патчить unzip не обязательно, есть convmv.
Который, ИМХО, куда более правильное решение, хотя и создаёт дополнительный проход скриптом по файлам.

Ну давай, блесни своим.

лишнее файловые операции более правильны, вместо создания файлов сразу в правильной кодировке? да месье норкоман
тем более, что unzip-то скомпилять и прописать в path несложно

Мы может быть про разные патчи говорим?
Я о добавлении ещё одной переменной окружения UNZIP_LOCALE или что-то ещё с кодировкой в которой должны быть имена файлов в архиве.
В этом случае, возникает новая проблема: архив, положим, в EUC-JP или даже koi8r, а переменная в значении ‘cp1251’: нужен ещё один этап преобразования имени файла, с возможными потерями части собственно имени. А у convmv прогон один и универсален: из заданной кодировки в utf-8.

архив, положим, в EUC-JP или даже koi8r

ни разу не встречал. ок, для таких редких случаев можно запасным вариантом convmv

Источник

Команда Linux unzip

Есть несколько способов разархивировать файлы с помощью этой команды

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

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

Распаковать отдельные ZIP-файлы

Основной синтаксис для распаковки файла:

Например, скажем, вы загрузили альбом с названием Угроза трезвости . Чтобы распаковать этот файл в текущую папку, вам нужно просто выполнить следующую команду:

Распаковать несколько файлов ZIP

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

Если вы заархивировали три файла альбомов Алисы Купер с именами Trash , Hey Stoopid и Dragontown по отдельности, вы можете попробовать разархивировать их. их:

Тем не менее, вы получите эту ошибку:

Предполагая, что эти три файла находятся в одной папке, лучше использовать следующую команду:

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

Исключить некоторые ZIP-файлы

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

Чтобы продолжить наш пример, альбом “Trash” в Trash.zip имеет MP3 под названием Bed Of Nails . Чтобы извлечь все песни, кроме “Bed Of Nails”, вы должны сделать следующее:

Извлечь ZIP-файл в другой каталог

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

Например, чтобы распаковать файл Trash.zip в файл /home/music/Алиса Купер/Trash , вы должны использовать следующий синтаксис:

Как показать содержимое сжатого Zip-файла

Чтобы просмотреть содержимое сжатого файла, используйте переключатель -l .

В нашем примере мы могли бы использовать этот переключатель, чтобы увидеть все файлы в Trash.zip .

Возвращенная информация включает в себя:

  • Длина в байтах
  • Дата создания
  • Время создано
  • название

Как проверить, является ли ZIP-файл действительным

Чтобы проверить, правильно ли структурирован ZIP-файл и можно ли его правильно использовать перед извлечением, используйте переключатель -t .

Читайте также:  Linux как удалить много файлов

Например, чтобы проверить, является ли Trash.zip допустимым, вы можете выполнить следующее:

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

См. Подробную информацию в файле ZIP

Переключатель -v (подробный) может дать более подробную информацию.

Чтобы использовать этот переключатель с Trash.zip для просмотра дополнительной информации, мы набрали бы:

Вывод содержит следующую информацию:

  • Длина в байтах
  • метод
  • Размер
  • Процент сжатия
  • Дата и время создания
  • CRC
  • название

Распакуйте ZIP-файл без создания каталогов

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

Например, при извлечении filename1.zip , который имеет следующие три папки, будут извлечены те же самые папки:

  • Папка 1: filea.txt, fileb.txt, filec.txt
  • Папка 2: filed.txt, filee.txt
  • Папка 3: filef.txt

В этом примере, чтобы извлечь все файлы TXT в текущую папку, не создавая эти три папки, просто добавьте -j в конец команды.

Распакуйте ZIP-файл без запроса перезаписи

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

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

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

Извлечение защищенных паролем ZIP-файлов

Если вам нужно разархивировать файл, для доступа к которому требуется пароль, используйте переключатель -p , а затем пароль.

Например, чтобы разархивировать файл с именем cats.zip с паролем kittens123 , используйте следующее:

Разархивируйте файл, не отображая вывод

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

Это распаковывает имя файла без предоставления какого-либо вывода и возвращает вас к курсору, когда он закончил.

Источник

Как разархивировать многочастный (составной) ZIP на Linux?

Мне нужно загрузить файл 400 МБ на мой веб-сервер, но я ограничен загрузкой 200 МБ. Мой хост предложил мне использовать составной архив, чего я никогда не делал в Linux.

Я создал тест в своей папке, сжать вверх PDF в test.zip.001 , .002 и .003 . Как мне разархивировать его? Нужно ли сначала присоединиться к ним?

Обратите внимание, что я буду так же рад использовать 7z, как и форматы ZIP. Если это имеет какое-либо значение для результата.

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

Это сцепить все ваши test.zip.001 , test.zip.002 и т.д файлов в один большой, test.zip файл. Если у вас есть этот единственный файл, вы можете запустить unzip test.zip

/hugefile это каталог? Какова цель символа тильды? Извините, что спрашиваю, что я подозреваю, это очень простые вопросы.

/ огромный файл — это то же самое, что и / дом / Тим / огромный файл. ты разделил свои файлы? что такое имена разделенных файлов?

unzip Утилита Linux на самом деле не поддерживает составные почтовые индексы. Из руководства :

Многокомпонентные архивы пока не поддерживаются, кроме как в сочетании с zip. (Все части должны быть соединены вместе по порядку, а затем zip -F (для zip 2.x) или zip -FF (для zip 3.x) должны быть выполнены для объединенного архива, чтобы «исправить» его. Кроме того, zip 3.0 и более поздние версии могут объединяться многочастные (разделенные) архивы в объединенный однофайловый архив с использованием zip -s- inarchive -O outarchive . Для получения дополнительной информации см. справочную страницу zip 3. )

Таким образом, вам нужно сначала соединить части, а затем восстановить результат. cat test.zip.* объединяет все файлы, вызываемые test.zip.* там, где подстановочный знак * обозначает любую последовательность символов; файлы нумеруются в лексикографическом порядке, который совпадает с числовым порядком благодаря нулям в начале. >test.zip направляет вывод в файл test.zip .

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

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

Распаковать множество архивов *.tar.gz (В папке больше 30 архивов. как все одним махом распаковать?)

Распаковать множество архивов *.tar.gz

Сообщение Stasroot1 » 04.01.2010 11:38

Скачал из инета кучу архивов. все лежат в одной папке. Надо распаковать все архивы одним махом в эту же папку, так чтобы: были архивы 1. 2. . 30 а стали архивы 1. 2. . 30 вместе с распакованными архивами разложенными по соответствующим папкам: папки: 1. 2. . 30.

Читайте также:  Разбивка жесткого диска для линукса

Через графическую болочку такого сделать не получается, максимум что получается это распаковать два архива одним махом. Наверняка моя проблема решаема. Прошу подсказать.
Система SUSE11.2 КДЕ4,3,1

Re: Распаковать множество архивов *.tar.gz

Сообщение diesel » 04.01.2010 12:15

Re: Распаковать множество архивов *.tar.gz

Сообщение Stasroot1 » 04.01.2010 14:20

Re: Распаковать множество архивов *.tar.gz

Сообщение Minton » 04.01.2010 16:00

«Настоящие мужчины используют поиск» ©Goodvin

Re: Распаковать множество архивов *.tar.gz

Сообщение Makinos » 04.01.2010 18:42

«многабукафф ниасилил»
жесть.

Re: Распаковать множество архивов *.tar.gz

Сообщение diesel » 04.01.2010 23:15

чтобы посмотреть что происходит на самом деле, вы можете пред каждой командой в цикле поставить echo:

Re: Распаковать множество архивов *.tar.gz

Сообщение Minton » 05.01.2010 00:12

«Настоящие мужчины используют поиск» ©Goodvin

Re: Распаковать множество архивов *.tar.gz

Сообщение Stasroot1 » 05.01.2010 09:05

«многабукафф ниасилил»
жесть.

Придираешся к Русскому языку в моем исполнении. Нет чтобы по делу написать что нибудь. а про то что много буковок, ну так как было так и написал.

Остальным спасибо за разъяснения!

делает практически почти так как нужно. Было в папке: «архив.tar.gz»
Стало в папке «папка «архив»» а в папке «папка «архив»» лежит сам «архив.tar.gz» простите за каламбур. а надо чтобы стало так:
НАДО: в папке: файл: «архив.tar.gz» и папка: «папка «архив»».

Хотя и тот вариант что вы мне уже разжевали тоже очень даже не плох! И самое главное выполняется на кучу порядков быстрее чем если все ручками разархивировать по одному/два через графический интерфейс! Еще рас спасибо! И. может это в общий FAQ? Я так понимаю универсальная для всех Линуксов команда.

Источник

Архивирование файлов в Linux

В наши дни мы сталкиваемся с файлами архивов очень часто и на всех платформах: Windows, Mac или Linux. Это могут быть программы, резервные копии систем или баз данных или просто архив файлов. Нам также часто приходится создавать свои архивы в Linux, чтобы передать несколько файлов друзьям или загрузить на файлообменник. В виде архивов распространяются пакеты программ, исходные коды, а также много других файлов, распространяемых на просторах интернета. Научиться выполнять архивирование файлов в Linux через терминал очень важно, возможно это вам понадобиться, когда не будет доступа к графическому интерфейсу, или просто со временем в терминале станет более приятно работать.

В этой инструкции я хочу подробно рассмотреть утилиты для архивирования в Linux, мы рассмотрим не только самую популярную и универсальную утилиту — tar, но и другие менее известные, а также популярные алгоритмы сжатия.

Архивирование в Linux

Важно отметить, что архивирование в linux это не одно и то же что и сжатие файлов linux. Архивирование — это объединение нескольких небольших файлов в один, с целю более удобной последующей передачи, хранения, шифрования или сжатия. Как я уже сказал, архивация выполняется специальными утилитами. Мы не будем трогать архивацию файлов в графическом интерфейсе, вы с ними разберетесь сами, наша тема — терминал.

Самой популярной для Linux утилитой для архивации есть tar. Она используется почти везде, для архивации исходников, упаковки пакетов. Для сжатия используются другие утилиты, в зависимости от алгоритма сжатия, например, zip, bz, xz, lzma и т д. Сначала выполняется архивация, затем сжатие, отдельными программами. Автоматический запуск некоторых утилит сжатия для только что созданного архива поддерживается в tar и других подобных программах с помощью специальных опций.

Также полезной возможностью архивации есть шифрование. Но теперь давайте рассмотрим какие существуют утилиты, с помощью которых выполняется архивирование файлов linux и как ими пользоваться.

Tar — это стандартная утилита, с помощью которой выполняется архивирование файлов Linux. Постепенно из небольшой программы архивации она превратилась в мощный инструмент, поддерживающий работу со многими вариантами архивов и алгоритмами сжатия. Программа поддерживает большое количество параметров. Давайте рассмотрим ее синтаксис и основные параметры:

$ tar опции f файл_для_записи /папка_файлами_для_архива

А теперь разберем основные опции:

  • A — добавить файл к архиву
  • c — создать архив в linux
  • d — сравнить файлы архива и распакованные файлы в файловой системе
  • j — сжать архив с помощью Bzip
  • z — сжать архив с помощью Gzip
  • r — добавить файлы в конец архива
  • t — показать содержимое архива
  • u — обновить архив относительно файловой системы
  • x — извлечь файлы из архива
  • v — показать подробную информацию о процессе работы
  • f — файл для записи архива
  • -C — распаковать в указанную папку
  • —strip-components — отбросить n вложенных папок

Теперь давайте рассмотрим архивирование файлов в Linux. Чтобы создать архив используйте такую команду:

tar -cvf archive.tar.gz /path/to/files

А чтобы распаковать архив tar linux:

tar -xvf archive.tar.gz

Очень просто запомнить для упаковки используется опция cCreate, а для распаковки — x — eXtract.

Сжатый архив создается точно так же, только с опцией -z, это в случае, если использовалось шифрование gizp, если нужно bzip то применяется опция -j:

tar -zcvf archive.tar.gz /path/to/files

$ tar -zxvf archive.tar.gz

Например, рассмотрим как заархивировать папку в Linux:

tar -zcvf home.tar.gz

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

Читайте также:  Windows для raspberry pi3

Также можно убрать сжатие:

Утилиты сжатия мы рассмотрим ниже.

Чтобы добавить файл в архив используйте:

tar -rvf archive.tar file.txt

Для извлечения одного файла синтаксис тот же:

tar -xvf archive.tar file.txt

Можно извлечь несколько файлов по шаблону соответствия с помощью параметра wildcard, например, извлечем все php файлы:

tar -xvf archive.tar —wildcards ‘*.php’

По умолчанию распаковать архив tar linux можно в текущую папку с именем архива, чтобы распаковать в нужную папку используйте ключ -C:

tar -xvf archive.tar -C /path/to/dir

Стандартную утилиту рассмотрели, теперь кратко рассмотрим ее альтернативы. Их не так много, и большинство из них уже устаревшие.

Shar позволяет создавать самораспаковывающиеся архивы. По сути, это скрипт оболочки, и для распаковки ему необходима оболочка Bash или другая совместимая с Bourne Shell. У Shar есть несколько преимуществ, но также он потенциально небезопасный, так как архив представляет собой исполняемый файл.

  • -o — сохранять архив в файл вместо стандартного вывода
  • -l — ограничить размер выходного файла
  • -L — ограничить размер выходного файла и разбить его на части
  • -n — имя архива не будет включено в заголовок
  • -a — разрешить автоматическую генерацию заголовков

Примеры использования shar для того чтобы заархивировать папку linux:

Создаем shar архив:

shar file_name.extension > filename.shar

Распаковываем shar архив:

ar — утилита для создания и управления архивами. В основном используется для архивации статических библиотек, но может быть использована для создания любых архивов. Раньше использовалась довольно часто но была вытеснена утилитой tar. Сейчас используется только для создания и обновления файлов статических библиотек.

  • — d — удалить модули из архива
  • — m — перемещение членов в архиве
  • — p — напечатать специфические члены архива
  • — q — быстрое добавление
  • — r — добавить члена к архиву
  • — s — создать индекс архива
  • — a — добавить новый файл к существующему архиву

Теперь рассмотрим примеры использования. Создадим статическую библиотеку libmath.a из объектных файлов substraction.o и division.o:

ar cr libmath.a substraction.o division.o

Теперь извлечем файлы из архива:

Таким образом, можно распаковать любую статическую библиотеку.

cpio — означает Copy in and out (скопировать ввод и вывод). Это еще один стандартный архиватор для Linux. Активно используется в менеджере пакетов Red Hat, а также для создания initramfs. Архивация в Linux для обычных файлов с помощью этой программы не применяется.

  • -a — сбросить время обращения к файлам после их копирования
  • -A — добавить файл
  • -d — создать каталоги при необходимости

Пример использования. Создаем cpio архив:

file1.o file2.o file3.o

ls | cpio -ov > /path/to/output_folder/obj.cpio

Архивирование папки linux выполняется также само.

Сжатие архивов в Linux

Как создать архив в linux рассмотрели. Теперь давайте поговорим о сжатии. Как я говорил, для сжатия используются специальные утилиты. Рассмотрим кратко несколько из них

Чаще всего применяется Gzip. Это стандартная утилита сжатия в Unix/Linux. Для декомпрессии используется gunzip или gzip -d Сначала рассмотрим ее синтаксис:

$ gzip опции файл

$ gunzip опции файл

Теперь разберем опции:

  • -c — выводить архив в стандартный вывод
  • -d — распаковать
  • -f — принудительно распаковывать или сжимать
  • -l — показать информацию об архиве
  • -r — рекурсивно перебирать каталоги
  • -0 — минимальный уровень сжатия
  • -9 — максимальный уровень сжатия

Примеры использования вы уже видели в описании утилиты tar. Например, выполним сжатие файла:

gzip -c файл > архив.gz

А теперь распакуем:

gunzip -c архив.gz

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

bzip2 — еще одна альтернативная утилита сжатия для Linux. Она более эффективная чем gzip, но работает медленнее. Для распаковки используйте утилиту bunzip2.

Описывать опции bzip2 я не буду, они аналогичны gzip. Чтобы создать архив в Linux используйте:

В текущем каталоге будет создан файл file.bz2

Новый и высокоэффективный алгоритм сжатия. Синтаксис и опции тоже похожи на Gzip. Для распаковки используйте unlzma.

Еще один высокоэффективный алгоритм сжатия. Обратно совместимый с Lzma. Параметры вызова тоже похожи на Gzip.

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

$ zip опции файлы

$ unzip опции архив

  • -d удалить файл из архива
  • -r — рекурсивно обходить каталоги
  • -0 — только архивировать, без сжатия
  • -9 — наилучший степень сжатия
  • -F — исправить zip файл
  • -e — шифровать файлы

Чтобы создать Zip архив в Linux используйте:

zip -r /path/to/files/*

А для распаковки:

Как видите архивирование zip в Linux не сильно отличается от других форматов.

Выводы

Теперь вы знаете все что нужно об архивации файлов в Linux. Мы рассмотрели только консольные команды, так сказать, чтобы была понятна суть. В графическом интерфейсе все еще проще. Если остались вопросы — задавайте их в комментариях.

Источник

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