Sugiro usar find
sem analisar a saída de ls ou de find
para evitar alguns problemas essencialmente relacionados com caracteres especiais eventualmente presentes no nome do arquivo .
find . -name "*.zip" -exec bash -c ' unzip "$0" -d "${0%*.zip}" ' {} \;