我有一堆深度超过10层的文件夹/文件。
我试过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 。