- массовая распаковка zip .нужна помощь.
- Команда Linux unzip
- Есть несколько способов разархивировать файлы с помощью этой команды
- Распаковать отдельные ZIP-файлы
- Распаковать несколько файлов ZIP
- Исключить некоторые ZIP-файлы
- Извлечь ZIP-файл в другой каталог
- Как показать содержимое сжатого Zip-файла
- Как проверить, является ли ZIP-файл действительным
- См. Подробную информацию в файле ZIP
- Распакуйте ZIP-файл без создания каталогов
- Распакуйте ZIP-файл без запроса перезаписи
- Извлечение защищенных паролем ZIP-файлов
- Разархивируйте файл, не отображая вывод
- Как разархивировать многочастный (составной) ZIP на Linux?
- unixforum.org
- Распаковать множество архивов *.tar.gz (В папке больше 30 архивов. как все одним махом распаковать?)
- Распаковать множество архивов *.tar.gz
- Re: Распаковать множество архивов *.tar.gz
- Re: Распаковать множество архивов *.tar.gz
- Re: Распаковать множество архивов *.tar.gz
- Re: Распаковать множество архивов *.tar.gz
- Re: Распаковать множество архивов *.tar.gz
- Re: Распаковать множество архивов *.tar.gz
- Re: Распаковать множество архивов *.tar.gz
- Архивирование файлов в Linux
- Архивирование в Linux
- Сжатие архивов в Linux
- Выводы
массовая распаковка 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 .
Например, чтобы проверить, является ли 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
Очень просто запомнить для упаковки используется опция c — Create, а для распаковки — 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, а потом сжать его утилитой для сжатия, только здесь мы получаем больше контроля над процессом сжатия:
Также можно убрать сжатие:
Утилиты сжатия мы рассмотрим ниже.
Чтобы добавить файл в архив используйте:
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. Мы рассмотрели только консольные команды, так сказать, чтобы была понятна суть. В графическом интерфейсе все еще проще. Если остались вопросы — задавайте их в комментариях.
Источник