Na verdade, a solução fornecida por m1k3y02 ( for i in *; do zip -r "$i.zip" $i; done
) funcionará apenas se o diretório atual contiver apenas subdiretórios.
Melhor maneira de encontrar e fechar apenas subdiretórios:
for dir in ./* ;do
if [[ -d $dir ]];then
zip -r ${dir}.zip $dir
fi
done
ou
find . -type d -maxdepth 1 -exec zip -r {}.zip {} \;