查找指向某个目录或其子目录之一的符号链接

Find symlinks to certain directory or one of its subdirs

提问人:Pekka 提问时间:12/11/2009 更新时间:1/4/2016 访问量:4812

问:

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

Linux Shell 符号链接

评论


答:

10赞 earl 12/11/2009 #1

一个简单而快速的方法,假设你把目标作为绝对路径(可能有助于解决这个问题):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$DIRxargs-n1find$PATH


总而言之:find(1) 是你的朋友。

评论

0赞 ives 2/6/2015
找到$PATH -type l -lname “$DIR*”
0赞 ives 2/6/2015
找到$PATH -type l -lname “$DIR*” -exec ls -l {} \;
0赞 pixelbeat 12/11/2009 #2

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

5赞 sqren 1/4/2016 #3

跟进伯爵给出的答案

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

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

例:

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

评论

0赞 Andreas Louv 5/8/2016
-xtype用于在(旧日)打开时查找符号链接。 是 afaik 是 GNU 扩展。你是对的。由于未使用,因此可以安全地省略它。不过,人们会认为只会提供目录,并且只会提供指向目录的符号链接。-L-follow-xtype-L-type d-type l -type d