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

Pek*_*ica 4 linux shell symlink

是否有一种简单的方法来显示指定路径中是​​否存在指向某个目录或其子项之一的符号链接

ear*_*arl 8

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

find $PATH -type l -xtype d -lname "$DIR*"
Run Code Online (Sandbox Code Playgroud)

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


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

find $DIR -type d | xargs -n1 find $PATH -lname
Run Code Online (Sandbox Code Playgroud)

第一个find列表$DIR及其所有子目录然后传递(xargs),一次一个(-n1),到第二个find查找源自下面的所有符号链接$PATH.


总结一下:find(1)是你的朋友.


sqr*_*ren 5

跟进Earl 给出的答案

-xtype不适用于 Mac OSX,但可以安全地省略:

find $PATH -type l -lname "$DIR*"
Run Code Online (Sandbox Code Playgroud)

例子:

find ~/ -type l -lname "~/my/sub/folder/*"
Run Code Online (Sandbox Code Playgroud)