Разархивировать определенные файлы из нескольких 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 , что явно не то, что вы хотите.

  • Я неоднократно застегиваю одну и ту же папку с файлами, но shasum продолжает меняться
  • Замещать несколько форматов звукового файла без дефляции
  • Кодирование кириллических имен файлов в zip-файлах
  • Как zip рекурсивно все подкаталоги, содержащие только текстовые файлы
  • Как использовать `ожидать` с` zipcloak`?
  • У вас возникли проблемы с распаковкой нескольких файлов
  • Как узнать, сколько места займет несжатый почтовый индекс
  • Понимание среды Linux Back-Slash и звездочки
  • Как распаковать несколько каталогов с zip-файлами, которые также содержат подкаталоги с zip-файлами?
  • невозможно извлечь файл, который загружается на FTP-сервер
  • Есть ли способ конвертировать zip в tar без извлечения его в файловую систему?
  • Linux и Unix - лучшая ОС в мире.