разархивируйте два разных типа расширений файлов

Обратите внимание, что .zip и .jar – просто пример, мои расширения файлов разные. Предположим, у меня есть каталог, который может содержать количество zip-файлов

a.zip b.zip c.zip 

И / ИЛИ

 z.jar x.jar y.jar 

наряду с другим содержимым.

Я хочу их распаковать.

Я пытался

 unzip -q *.zip 

а также

 unzip -q *.jar 

Но когда папка не содержит .jar-файлов, вторая команда будет терпеть неудачу

 unzip: cannot find or open *.jar, *.jar.zip or *.jar.ZIP. No zipfiles found. 

Для меня это проблематично, так как это ошибка, с которой мой скрипт выйдет. Я хочу тихо разархивировать * .zip и * .jar без ошибок. Нужно ли это сделать?

One Solution collect form web for “разархивируйте два разных типа расширений файлов”

Да, вы можете использовать nullglob в bash:

 $ shopt -s nullglob $ tee foo.zip bar.zip </dev/null $ echo *.zip *.jar bar.zip foo.zip 

Опция nullglob изменяет поведение несогласованного glob, чтобы стать литеральной строкой для полного удаления.

Однако этого, скорее всего, не будет достаточно в вашем конкретном случае использования, поскольку unzip не будет знать, что делать, если он не передал никаких аргументов. Вы должны проверить, есть ли почтовые индексы для распаковки сначала, например:

 shopt -s nullglob zips=( *.zip ) jars=( *.jar ) (( "${#zips[@]}" )) && unzip -q "${zips[@]}" (( "${#jars[@]}" )) && unzip -q "${jars[@]}" 

Или все сразу (если применимо):

 shopt -s nullglob zipsandjars=( *.zip *.jar ) (( "${#zipsandjars[@]}" )) && unzip -q "${zipsandjars[@]}" 

В оболочке POSIX что-то подобное можно также сделать так:

 for file in *.zip *.jar; do if [ "$file" != "*.zip" ] && [ "$file" != "*.jar" ]; then unzip -q "$file" fi done 
  • Будет ли zgrep рекурсивно искать zip-файлы, встроенные в zip-файлы?
  • zip все файлы и подпапка в каталоге без родительского каталога
  • Команда Unix zip обновляет существующий архив, а не создает новый
  • Раскройте архив gz с расширением zip
  • Как grep файл bz2, который находится далее в папке с zip-файлом
  • Скопировать файл из одной ZIP в другую?
  • Как добавить огромный архив в архив и удалить его параллельно
  • Как zip рекурсивно все подкаталоги, содержащие только текстовые файлы
  • Какой язык сценариев я могу использовать для автоматизации процесса конкатенации и копирования?
  • Извлечение содержимого zip-файла с помощью перезаписи всего режима в CentOS 5
  • Замещать несколько форматов звукового файла без дефляции
  • Interesting Posts

    сопоставлять файлы на основе md5, используя find

    Мышь не работает правильно

    Linux / Embedded Linux – понимание ядра и дополнительных компонентов BSP

    Односторонняя синхронизация каталога, но оставляйте удаленные файлы, удаленные по месту назначения

    Понимание данных stat, du и ls -l на моем монтировании NFS

    Мониторинг создания новых процессов

    Список всех файлов, заканчивающихся несколькими расширениями файлов?

    n-factor SSH-аутентификация для CentOS 7

    Должен ли я перекомпилировать, если я хочу изменить `–prefix`?

    UNIX KSH / BASH Вызов по ссылке с использованием массива (в GNU bash 4.2)

    надлежащий способ остановить программный RAID до выключения системы

    Как установить шрифт по умолчанию для всех приложений Qt5?

    Использование Verbose в работе cron

    Как изменить modMask в Xmonad, когда определенное окно сосредоточено, или на конкретном рабочем пространстве?

    Как создать веб-страницы в моем домашнем каталоге и настроить веб-сервер в своем веб-браузере?

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