Как разархивировать все zip-папки в моих подкаталогах? - PullRequest
0 голосов
/ 08 июня 2019

Структура моей папки

drwx------ 2 miki miki 4096 сеп 12  2018 Chapter03/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter05/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter07/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter09/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter10/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter13/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter14/
-rw-r--r-- 1 miki miki   96 сеп 12  2018 README.txt

Каждая глава содержит еще несколько папок на молнии. Я пробовал таким образом

unzip -d $(find ./ -type f -name '*.zip')

Это не работает.

Archive:  ./Chapter14/kops-master.zip
4ffc8d76f1313a2f2a04a87d543a0701816c3df7
checkdir:  cannot create extraction directory: ./Chapter14/weave-kube-master.zip
           File exists

Как должна выглядеть правильная команда?

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Попробуйте:

find . -type f -name '*.zip' -exec unzip {} \;

Это запускает unzip для каждого zip-файла, найденного вашей командой find.

Вышеуказанное будет работать, даже если в zip-файлах или каталогах есть пробелыили другие сложные символы в их именах.

0 голосов
/ 08 июня 2019

Поскольку zip-файлы могут содержать / nest zip-файлы, и мы не знаем порядок чтения файлов в команде find.Лучше всего выполнить команду find дважды или 3 раза.Соответствует уровню вложенности почтового индекса.

find . -type f -name '*.zip' -exec unzip {} \;
find . -type f -name '*.zip' -exec unzip {} \;
find . -type f -name '*.zip' -exec unzip {} \;
...