Você pode usar este loop em bash :
for i in */; do zip -r "${i%/}.zip" "$i"; done
i é o nome da variável de loop. */ significa todos os subdiretórios do diretório atual e incluirá uma barra nos nomes. Certifique-se de que você cd esteja no lugar certo antes de executar isso. "$i" simplesmente nomeia esse diretório, incluindo a barra final. As aspas asseguram que os espaços em branco no nome do diretório não causem problemas. ${i%/} é como $i mas com a barra final removida, então você pode usar isso para construir o nome do arquivo zip.
Se você quiser ver como isso funciona, inclua um echo antes do zip e você verá os comandos impressos ao invés de executados.