Você deve poder usar a opção -d
do unzip para definir um diretório alternativo para o conteúdo do archive.
unzip -d a a.zip
unzip -d b b.zip
e assim por diante. Em uma expressão find
, você deve conseguir derivar o nome do diretório a partir do nome do arquivo zip usando a expansão do parâmetro shell, por exemplo,
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Teste primeiro adicionando echo
, ou seja,
find -name '*.zip' -exec sh -c 'echo unzip -d "${1%.*}" "$1"' _ {} \;
ou algo parecido
while read -rd $'unzip -d a a.zip
unzip -d b b.zip
' f; do
unzip -d "${f%.*}" "$f"
done < <(find -name '*.zip' -print0)