如何在Linux中查找损坏的符号链接

时间:2020-03-05 15:26:45  来源:igfitidea点击:

符号链接(Symbolic links / symlinks)或者软链接用于在Linux中创建指向其他文件的快捷方式。
符号链接在Linux中的链接库中大量使用。

当链接指向的原始文件被删除时,该链接将变为悬空链接。
保持此类链接可能不是一个好主意。

现在出现了问题,如何在Linux中找到断开的符号链接?
有些发行版以不同的颜色显示断开的链接,但这并不是找到所有此类断开的链接的方法。

在Linux中查找损坏的符号链接

在本教程中,将介绍在Linux中查找悬空链接的几种方法。

方法1.使用find命令列出所有无效的符号链接

惊人的find命令也可用于查找损坏的软链接。
此命令的较新版本为该任务提供了专用选项。

要查找当前目录及其子目录中的所有悬挂链接,可以使用以下find命令:

find . -xtype l

输出将列出所有断开的链接:

find . -xtype l
./target_link2
./newdir/new_dir/link_dir

方法2:使用symlinks命令查找损坏的符号链接

我们也可以使用名为symlinks的专用命令来处理悬空链接。

我们可能必须安装symlinks命令。
它在Debian中可用。
如果我们使用的是Ubuntu,则必须启用Universe存储库。

sudo apt install symlinks

安装后,我们可以按以下方式使用它:

symlinks [options] path_to_directory

因此,如果必须在当前目录中找到断开的链接,则可以这样使用它:

symlinks .
dangling: /home/igi/tutorials/target_link2 -> newdir/test_dir/myzip

你有注意到吗?
它仅列出一个断开的链接,而find命令具有两个断开的链接。
这是因为如果我们要进行递归搜索,则必须指定以下选项:

symlinks -r directory

不是这个。
我们也可以选择使用symlinks命令的-d选项删除所有断开的链接。

symlinks -d .
dangling: /home/igi/tutorials/target_link2 -> newdir/test_dir/myzip
deleted:  /home/igi/tutorials/target_link2 -> newdir/test_dir/myzip

实际上,符号链接可用于正确管理系统中的软链接。
它可以警告我们有关文件系统之间的链接,将混乱的链接更改为相对链接或者缩短冗长的链接。