Итак, у меня есть скрипт, который перебирает zip-файлы, перечисляет их содержимое с помощью unzip -l $ filename и ищет совпадения с шаблоном (.*)report.xml , в этом случае выдает test0\report.xml

Но когда он пытается распаковать, используя unzip -j $filename , я получаю caution: filename not matched: test0\report.xml

Я остановился и попробовал вручную файл, который перечисляет:

7285 2018-05-04 13:34 test0\report.xml

Затем делать

unzip -j 2747693b-7027-44d3-98f4-a01f1ed139cf.zip test0\report.xml

Предупреждает об ошибке caution: filename not matched: test0report.xml

Я попытался вызвать \\ чтобы избежать этого, затем та же ошибка, но вместо этого произнесение test0\report.xml .

Я пробовал все, как \, или /, или //, поэтому я не думаю, что это проблема обратной косой черты.

Пожалуйста помоги.

1 ответ1

0

Я воссоздал проблему в моем Kubuntu. Имя файла было буквально test0\report.xml и когда я это сделал

unzip -j foo.zip test0\\report.xml

unzip вернул filename not matched: test0\report.xml хотя полученная строка должна совпадать, я думаю.

Инструмент поддерживает некоторые шаблоны. Я смог распаковать файл с помощью этой команды:

unzip -j foo.zip 'test0?report.xml'

Жук? Я предполагаю, что вы должны добавить некоторую логику в ваш скрипт или просто разархивировать вручную всякий раз, когда такая (надеюсь, редкая) ситуация повторяется. Или воспользуйтесь этими подстановочными знаками, поддерживаемыми unzip и вместо сопоставления (.*)report.xml в скрипте разрешите unzip выполнить свою работу:

unzip -j foo.zip '*report.xml'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .