используя путь с "*" в команде unzip - PullRequest
0 голосов
/ 17 мая 2018

У меня есть несколько zip-файлов, и я хочу распаковать по другому пути только те файлы, которые имеют некоторые характеристики, поэтому я выполняю эту команду в linux:

unzip -q -o ./path1/*/"*.zip" Key/* -d /path2/

Но это выполнение возвращает мне следующее:

unzip:  cannot find or open ./path1/*/*.zip, ./path1/*/*.zip.zip or
./path1/*/*.zip.ZIP.

No zipfiles found.

Если я выполню эту другую опцию:

unzip -q -o ./path1/*/*.zip Key/* -d /path2/

Он просто распаковывает то, что входит в первый zip-файл в / path1 / * /, и возвращает следующее сообщение:

caution: filename not matched:  ./path1/folder/zipFileName1.zip
caution: filename not matched:  ./path1/folder/zipFileName2.zip
caution: filename not matched:  ./path1/folder/zipFileName3.zip
caution: filename not matched:  ./path1/folder/zipFileName4.zip

Мне нужно использовать "*" или что-то похожее в пути, потому что я не знаю названия одной папки.

Может ли кто-нибудь мне помочь? Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Используйте for, цикл:

$ shopt -s nullglob
$ for f in path1/*.zip path2/*/*.zip ; do [ -r "$f" ] && unzip -l "$f" ; done 

или

shopt -s nullglob                   # see comments 
for f in path1/*.zip path2/*/*.zip  # all source paths go in here
do 
  [ -r "$f" ] && unzip -l "$f"      # + whatever parameters you need for unzip
done 
0 голосов
/ 17 мая 2018

Вы можете использовать find для поиска zip файлов и unzip их один за другим:

find ./path1 Key -type f -name "*.zip" -exec unzip -q -o -d /path2 {}

Обратите внимание, что при этом будут распакованы все zip файлы из всех подкаталогов path1 и Key.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...