If the suggestion above still does not work, I have another idea.
Your error message is:
Error: file ‘/@/boot/intel-ucode.img^/@/boot/initramfs-linux-zen.img’ not found
While in the update-grub output I can see:
Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux-zen.img
You see, there is a ^ instead of a space.
I’ve found something similar here:
Maybe, you could
sudo micro /boot/grub/grub.cfg
search that string and replace the ^ with a space.
If it works, this could be overwritten by the next update-grub, but we’ll see that later…
The solution should be the one in the link above:
sudo micro /etc/grub.d/30_os-prober
replace in line 213
LINITRD="`echo ${LINUX} | cut -d ':' -f 5`"
with
LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"
and finally
sudo update-grub