How to Find Broken Symlinks in Linux

Symbolic links (symlinks) are shortcuts in Linux that point to files or directories, allowing users to access them without specifying full paths. However, when the target file or directory is deleted or moved, the symlink becomes broken. This article explains how to identify and fix broken symlinks in Linux systems.

What is a Broken Symlink?

A broken symlink is a symbolic link that points to a non-existent file or directory. When you try to access it, the system returns a "file not found" error. Broken symlinks occur when:

  • The target file or directory is deleted

  • The target is moved or renamed

  • The symlink was created with an incorrect path

  • File system corruption occurs

Why Broken Symlinks are Problematic

Broken symlinks can cause several issues:

  • Script failures Applications and scripts may crash when encountering broken links

  • Disk space waste The symlink files still consume inodes and directory space

  • Maintenance overhead Clutter in file system makes administration more difficult

  • User confusion Broken shortcuts mislead users about available resources

Finding Broken Symlinks

The find command with the -xtype l option identifies broken symbolic links by testing if the target exists.

Basic Search Commands

Find broken symlinks in the current directory and subdirectories:

find . -xtype l

Search in a specific directory:

find /home/user -xtype l

Display detailed information about broken symlinks:

find . -xtype l -ls

Advanced Search Options

Find broken symlinks and show their targets:

find . -xtype l -printf "%p -> %l<br>"

Count broken symlinks in a directory:

find /path/to/directory -xtype l | wc -l

Fixing Broken Symlinks

Once identified, broken symlinks can be deleted or updated to point to valid targets.

Deleting Broken Symlinks

Remove a single broken symlink:

rm broken_link

Delete all broken symlinks in current directory:

find . -xtype l -delete

Recreating Symlinks

Update a broken symlink to point to a new valid target:

ln -sf /path/to/new/target broken_link

The -s option creates a symbolic link, and -f forces overwriting of the existing broken link.

Automated Cleanup Script

Create a script to regularly clean broken symlinks:

#!/bin/bash
# Find and list broken symlinks
echo "Broken symlinks found:"
find /home -xtype l -print

# Optionally delete them (uncomment next line)
# find /home -xtype l -delete

Example Output

When running the find command, typical output might look like:

./old_config -> /etc/removed_file.conf
./backup_link -> /tmp/deleted_backup.tar
./documents/shortcut -> /home/user/moved_folder

Conclusion

Broken symlinks are common in Linux systems but can be easily identified using the find -xtype l command. Regular maintenance involves either deleting unnecessary broken links or updating them to point to valid targets. This prevents system issues and maintains clean file organization.

Updated on: 2026-03-17T09:01:38+05:30

8K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements