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

Я новичок в Unix и пытаюсь извлечь определенное имя файла шаблона из нескольких ZIP-файлов. Я использую find для поиска zip-файлов, а затем пытается извлечь файлы с именем файла CTL в zip-файле, a*b*zip .

 $ unzip -jn 'find $source_dir -mtime -$st_d -daystart -iname "a*zip"' \ *CTL* -d $target_dir` 

Помимо этого я попытался использовать:

 $ find -type f -newermt $start_date \! -newermt $end_date -name "a*zip" \ | while read filename; do unzip -d $target_dir; done;` 

но это извлечение всех файлов, но я ищу только те файлы, у которых есть имя файла CTL .

One Solution collect form web for “Разархивировать определенные файлы из нескольких ZIP-файлов”

Вы можете просто сделать это, используя find -exec .

 find . -type f -name '*.zip' -exec unzip {} '*CTL*' -d "$target_dir" \; 

Объяснение: -exec выполнит следующую команду для каждого найденного файла, где {} заменяется именем файла. Команда должна быть прервана ; , Использовать \; в конце (';' escaped with \ ), чтобы избежать интерпретации вашей оболочки ; для своего собственного как завершения для find , вместо этого он передается для find виде обычного текста.

Кроме того, обратите внимание, что хорошей практикой является включение шаблонов файлов в кавычки, когда они передаются в качестве аргументов, то есть '*CTL*' а не только *CTL* . При этом вы не позволяете оболочке расширять имена файлов. Например, предположим, что в этом случае один из ваших zip-файлов имеет CTL в имени файла (скажем, abcCTL.zip ). Если вы используете только *CTL* для шаблона, оболочка будет расширять его и вместо передачи шаблона для unzip вместо этого будет передавать имя файла abcCTL.zip , что явно не то, что вы хотите.

  • Есть ли способ использовать sed или awk для фильтрации данных внутри заархивированного файла?
  • Как узнать, сколько места займет несжатый почтовый индекс
  • Как я могу сделать zip, указав каталог?
  • Автоматическое извлечение zip-файлов, таких как osx
  • Можно ли распаковать zip-файл, содержащий образ диска, а затем сохранить его на SD-карту за один шаг?
  • Подмена текста внутри сжатых файлов
  • распаковать вложенные .zip-файлы по сценарию оболочки
  • Сжатие старых файлов журнала и переход в новый каталог
  • поиск содержимого файлов, упакованных в zip-файл
  • Как подождать, пока команда mv завершится в unix?
  • Сжатие и удаление исходного каталога с ограниченным хранилищем
  • Linux и Unix - лучшая ОС в мире.