如何查找指向给定目录内任何文件/目录的所有符号链接


15

在这个问题这个问题(例如),您将获得有关如何查找指向给定目录的符号链接的解决方案(我们称它为/dir1),而我对可能指向其中任何文件/文件夹的符号链接感兴趣/dir1

我想删除这样的目录,但是我不确定这样做是否安全,因为在其他目录(我们称之为/dir2)上,我可能会有指向的内部符号链接/dir1

此外,我可能已经使用绝对或相对路径创建了这些符号链接。我唯一的帮助是,我知道我要检查的符号链接位于已挂载的文件系统上/dir2

Answers:


15

您可以使用以下命令找到所有符号链接:

find / -type l 

您可能需要以root用户身份运行此文件,以便到达光盘上的每个位置。

您可以使用扩展这些readlink -f链接,以获取链接的完整路径,并且应该能够grep针对要删除的目标目录进行输出:

find / -type l -exec readlink -f {} + | grep -F /dir2

使用find / -type l -printf '%l\n'不起作用,因为您会获得相对链接,例如../tmp/xyz可能指向目标目录,但由于它们没有完全展开而没有匹配。


1
如果是子树,遵循符号链接可能很有用:find -L /subtree -xtype l -exec readlink -f {} +
ruvim

3

在我的情况下,可接受的答案没有用(因为它没有输出链接源)。这对我有用。

我使用两个-exec子句解决了这个问题:

find /home/ -type l -exec readlink -nf {} ';' -exec echo " -> {}" ';' | grep "/dir2"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.