С зш:
cd -P -- "$dir"
for i (**/*(ND@)) [[ $i:A = $PWD/* ]] || [[ $i:A = $PWD ]] || print -r -- "$i => $i:A"
Теперь, если каталог есть, /foo
и у вас есть /foo/bar
символическая ссылка /foo/baz
, это ссылка, цель которой находится в / foo, но после перемещения ссылка все равно будет разорвана, поэтому вы можете также захотеть сопоставить символические ссылки с абсолютными путями.
Но даже bar => ../foo/baz
в /foo
этом случае проблема может быть связана с ошибкой (ложноотрицательным), а символическая ссылка a => b
where b
вне дерева (ложно-положительная, в зависимости от того, как вы хотите на нее смотреть)