Выборочно извлекать файлы из .zip-архива из командной строки

Предположим, у меня большой zip-файл (> 50 ГБ), и я хочу извлечь из него некоторые файлы из командной строки.

Чтобы получить файлы, я запускаю команду:

unzip -l myfile.zip | grep "foo" 

который дает мне список записей zip; как я могу извлечь те файлы, которые проходят через фильтр grep? Я пробовал использовать xargs unzip -j но я хотел бы получить более чистое решение, поскольку записи в zip требуют очистки бесполезной информации.

  • Как перенаправить вывод программы в ZIP-файл?
  • Как узнать, сколько места займет несжатый почтовый индекс
  • Как сжать файлы на основе даты файла
  • Bash: Zipping / группировка файлов по общей подстроке
  • Ошибка Ubuntu unzip: ошибка sysmalloc не выполнена
  • распаковать вложенные .zip-файлы по сценарию оболочки
  • Поиск файлов внутри нескольких подкаталогов и zip-каталогов
  • Как зашифровать каталог с помощью шифрования имен файлов?
  • One Solution collect form web for “Выборочно извлекать файлы из .zip-архива из командной строки”

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

    Используйте что-то вроде:

     unzip -j myfile.zip '*foo*' 

    осторожно процитировать подстановочные знаки из оболочки .

    Если вы продолжите направление вывода grepping unzip , разделите заголовок и трейлер и уменьшите его до столбца имени файла:

     unzip -l myfile.zip | sed '1,3d; /--------- -------/d; $d'|cut -c31- 
    Interesting Posts

    Несколько раскладок клавиатуры и ярлыки

    Почему мой скрипт Bash возвращает синтаксическую ошибку?

    Сканируйте диск для файлов> 10 ГБ и (если еще не сделано) создайте tar, разбитый на 10 Гбайт кусков для каждого

    bash find using variable

    Как быстро переключаться между дисплеями в Fedora 18

    Как разбирать строку, например 20170202, до даты в сценарии bash?

    Автоматический вход по устройству с последующим логином пользователя?

    Программа не заканчивается при вызове из udev

    Создание исполняемого файла Linux с помощью Mono с помощью mkbundle

    Как настроить Mutt и Spamassassim

    Нет файла sendmail.mc.rpmnew после обновления, несмотря на наличие файла sendmail.cf.rpmnew

    Как просмотреть мой текущий пользователь / пароль в bash?

    Установка программ на флеш-накопитель, чтобы они могли выполняться на месте

    Процессор является бесплатным, но скрипт bash не использует все ресурсы ЦП

    Непрерывное усиление масштабирования на сенсорной панели с помощью жесты libinput

    Linux и Unix - лучшая ОС в мире.