This is untested code, only used with 'echo', since I don't like to end with multiple zip files. And it is phantasy zip syntax, since I don't know 7za, but I will explain:
find . -type d -execdir /.../ad-hoc.sh {} ";"
The script ad-hoc.sh has to be adressed with an absolute path and should not be in the current path, to not affect the outcome, but it might be in the parentdir:
find . -type d -execdir $PWD/../ad-hoc.sh {} ";"
and, if not made executable, be explicitly invoked:
find . -type d -execdir bash $PWD/../ad-hoc.sh {} ";"
Find shall look in the current dir, only for files of type d (dirs), where to -execute a bashscript with parameter {}, the directory found.
Ok - what is the ad-hoc.sh, we execute in the dir and subdirs? It's another find:
#!/bin/bash
dir=$1
find $dir -maxdepth 1 -type f -exec echo zip -o "$dir.zip" {} +
-maxdepth 1 prevents find to search subdirs, -type says to just operate on files. -exec launches a command, for testing "echo zip ...", but if it looks promising (you do backups often, don't you?), you - well, here starts my pseudo code: -o:= -output "$PWD.zip", and {} + is the file list.
tree
.
├── buch-klein.kry
├── buch.kry
├── crypt
│ ├── moveto.sh.crypt
│ └── sub1
│ ├── foo.crypt
│ └── sub2
│ └── bar.crypt
├── original
│ ├── 1
│ │ └── 2
│ │ └── 3
│ ├── moveto.sh
│ └── sub1
│ └── sub2
│ └── up3 -> ../../../nr
├── outputfile.txt
├── rot.sh
└── zoom.sh
find . -type d -execdir $PWD/../ad-hoc.sh {} ";"
zip -o ./..zip ././buch-klein.kry ././rot.sh ././buch.kry ././zoom.sh ././outputfile.txt
zip -o ./original.zip ./original/moveto.sh
zip -o ./crypt.zip ./crypt/moveto.sh.crypt
zip -o ./sub1.zip ./sub1/foo.crypt
zip -o ./sub2.zip ./sub2/bar.crypt
Every file with extension is a regular file, and every file without is a directory or a symlink to a dir (up3).
The {} has to be the last element of a find -exec command before the terminating ";" or +, so you have to build your 7z-command accordingly.
so if your 7za command is
7za a -t7z -r $dir.7za *
the ad-hoc.sh might look like this:
#!/bin/bash
dir=$1
find $dir -maxdepth 1 -type f -exec echo 7za -t7z -r "$dir.7za" {} +