Con zsh:
cd -P -- "$dir"
for i (**/*(ND@)) [[ $i:A = $PWD/* ]] || [[ $i:A = $PWD ]] || print -r -- "$i => $i:A"
Ahora, si el directorio es /fooy tiene /foo/barun enlace simbólico /foo/baz, ese es un enlace cuyo objetivo está en / foo, pero una vez movido, el enlace seguirá roto, por lo que es posible que también desee hacer coincidir los enlaces simbólicos con las rutas absolutas.
Pero incluso entonces, una bar => ../foo/bazen /foosería un problema (falso negativo), por lo que sería una a => bdonde bes un enlace simbólico fuera del árbol (falsos positivos, dependiendo de cómo desea que mirarlo)