You can free some space with:
conda clean --all
cleanRemove unused packages and caches.
Conda already use symlinks when possible for packages. So, not much to improve here, I guess.
Ok, thanks, but I would like to know “not for a specific environment, but in general” – for all environments.
You can list all packages in all envs with a few lines of Python:
import os
import subprocess
for env in os.listdir('/Users/me/miniconda3/envs'):
subprocess.call(['conda', 'list', '-n', env])