Мне нужно было решение, подобное предложенному Джайлсом в 2010 году, за исключением того, что мне нужно было сохранить структуру папок, а не распаковывать все в каталог верхнего уровня. Вот мой взгляд на него с добавлением/изменением трех строк:
#!/bin/bash
shopt -s globstar nullglob
while set -- **/*.zip; [ $# -ge 1 ]
do
for z
do
( cd -- "$(dirname "$z")" &&
z=${z##*/} &&
cp -- "$z" "$z".bak &&
mkdir -- "$z"dir &&
unzip -- "$z" -d "$z"dir &&
rm -- "$z"
)
done
done