In a previous article, we explained what a symbolic link is in Linux. Symbolic links or soft links are used to create shortcuts to other files in Linux. Symbolic links are heavily used in Linux to link libraries.
When the original file pointed by the link is deleted, the link becomes a dead link. It's probably not a good idea to keep such links around.
Now the question comes, how to find broken symbolic links in Linux? Some distributions display broken links in different colors, but this is not a way to find all such broken links.
In this tutorial, I will show you several ways to find dead links (dangling links) in Linux.
The magical find command can also be used to find broken soft links. Newer versions of this command provide dedicated options for this task.
To find all dead links in the current directory and its subdirectories, you can use the find command, as shown below:
find . -xtype l
Its output will list all broken links:
┌──(linuxmi㉿linuxmi)-[~] └─$ find . -xtype l ./www.linuxmi.com/xpstat ./www.linuxmi.com/linuxmi/linux ./www.linuxmi.com/linuxmi/linuxmi.com/ubuntu ./www.linuxmi.com/linuxmi/linuxmi ./linuxmi.com/share/inuxmi.md ./.mozilla/firefox/0gl7btzd.default-esr/lock ./linuxmi/link_dir
You can use find with exec and delete the links it finds.
You can also use a dedicated command called symlinks to handle dead links.
You may have to install the symbolic link command. It is available in Debian. If you are using Ubuntu, you must enable the Universe repository.
sudo apt install symlinks
After installation, you can use it as follows:
symlinks [options] path_to_directory
So, if you have to find a broken link in the current directory, you can use it like this:
┌──(linuxmi㉿linuxmi)-[~] └─$ symlinks . absolute: /home/linuxmi/test -> /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py
Did you notice anything? It only lists one broken link, while the find command has 7 broken links. This is because if you want to search recursively, you must specify the option:
symlinks -r directory
It's not like this. You can also choose to remove all broken links using the -d option of the symlinks command.
┌──(linuxmi㉿linuxmi)-[~] └─$ symlinks -d . absolute: /home/linuxmi/test -> /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py
In fact, symbolic links can be used to correctly manage soft links in the system. It can warn you about links across file systems, change cluttered links to relative ones or shorten lengthy links.
In Linux, there are multiple ways to perform a task. Finding broken symbolic links is the same. I've shown you two methods, but there are certainly others. If you have other favorite commands for managing dead links, please share them with us in the comments section.
On a related topic, you can also read The concept of hard links in Linux.
The above is the detailed content of How to find broken symbolic links in Linux. For more information, please follow other related articles on the PHP Chinese website!