O problema é que *.zip
será expandido para todos os arquivos ZIP antes de ser passado para o comando zip
.
Faça isso com um simples loop:
for f in *.zip; do zip -d "$f" '*.html'; done
Se você tem o Zsh, esse tipo de loop é um pouco mais curto:
for f (*.zip) zip -d "$f" '*.html'
Se você quiser recursar em subpastas, com as ferramentas padrão do OS X, use find
:
find /path/to/files -type f -name '*.zip' -exec zip -d {} '*.html' \;