查找符号链接到某个目录或其子目录之一

时间:2009-12-10 20:37:14

标签: linux shell symlink

是否有一种简单的方法可以显示指定路径中是​​否有任何符号链接指向某个目录或其中一个子目录?

3 个答案:

答案 0 :(得分:8)

一种简单快速的方法,假设您将目标作为绝对路径(readlink(1)可能有助于解决此问题):

find $PATH -type l -xtype d -lname "$DIR*"

这会找到-type l下方的所有符号链接($PATH),这些符号链接指向名称以-xtype d开头的目录($DIR)。


另一种方法是O(n * m),因此可能需要很长时间和两天:

find $DIR -type d | xargs -n1 find $PATH -lname

第一个find列出$DIR及其所有子目录,然后一次一个(xargs)传递给第二个{{1查找源自-n1以下的所有符号链接。


总结一下: find 是你的朋友。

答案 1 :(得分:3)

跟进the answer given by earl

-xtype在Mac OSX上不起作用,但可以安全地省略:

find $PATH -type l -lname "$DIR*"

示例:

find ~/ -type l -lname "~/my/sub/folder/*"

答案 2 :(得分:0)

查看fslint中的findbl(错误链接)脚本。它可能会给你一些提示: http://code.google.com/p/fslint/source/browse/trunk/fslint/findbl