如何find指向文件夹树之外的任何符号链接?

我有一堆深度超过10层的文件夹/文件。

如何find指向该文件夹树之外的任何符号链接

我试过find -type l但是这会返回所有的软链接,甚至是那些目的地在文件夹树中的链接。

谢谢

如果所有的符号链接目标都是绝对的,你可以这样做:

 find /folder/tree -type l -not -lname '/folder/tree/*' -print 

但是,如果您的树中有任何相对链接,尤其是那些embedded目标path中的./../ ,则可能需要遍历每个链接来标准化目标,然后查看它是否与文件夹匹配树:

 find /folder/tree -type l -print | \ while read symlink do target=$(readlink -f "$symlink") expr match "$target" "^/folder/tree/.*" >/dev/null || echo "$symlink" done # end of pipeline 

两者都做同样的事情,这是打印每个符号链接,目标不匹配/folder/tree