Con zsh:
cd -P -- "$dir"
for i (**/*(ND@)) [[ $i:A = $PWD/* ]] || [[ $i:A = $PWD ]] || print -r -- "$i => $i:A"
Ahora, si el directorio es /foo
y tiene /foo/bar
un 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/baz
en /foo
sería un problema (falso negativo), por lo que sería una a => b
donde b
es un enlace simbólico fuera del árbol (falsos positivos, dependiendo de cómo desea que mirarlo)