symlinks [ -cdorstvC ] LINK|DIR ...
symlinks is a useful utility for maintainers of FTP sites, CDROMs, and Linux software distributions. It scans directories for symbolic links and lists them on stdout, often revealing flaws in the filesystem tree.
Each link is output with a classification of relative, absolute, dangling, messy, lengthy, or other_fs.
relative links are those expressed as paths relative to the directory in which the links reside, usually independent of the mount point of the filesystem.
absolute links are those given as an absolute path from the root directory as indicated by a leading slash (/).
dangling links are those for which the target of the link does not currently exist. This commonly occurs for absolute links when a filesystem is mounted at other than its customary mount point (such as when the normal root filesystem is mounted at /mnt after booting from alternative media).
messy links are links which contain unnecessary slashes or dots in the path. These are cleaned up as well when -c is specified.
lengthy links are links which use "../" more than necessary in the path (eg. /bin/vi -> ../bin/vim) These are only detected when -s is specified, and are only cleaned up when -c is also specified.
other_fs are those links whose target currently resides on a different filesystem from where symlinks was run (most useful with -r ).
convert absolute links (within the same filesystem) to relative links. This permits links to maintain their validity regardless of the mount point used for the filesystem -- a desirable setup in most cases. This option also causes any messy links to be cleaned up, and, if -s was also specified, then lengthy links are also shortened. Links affected by -c are prefixed with changed in the output.
causes dangling links to be removed.
fix links on other filesystems encountered while recursing. Normally, other filesystems encountered are not modified by symlinks.
recursively operate on subdirectories within the same filesystem.
causes lengthy links to be detected.
is used to test for what symlinks would do if -c were specified, but without really changing anything.
show all symbolic links. By default, relative links are not shown unless -v is specified.
chroot to current directory before looking at dirlist. You need to be root for the chroot() call to work, and all paths given as args must be relative to the current directory.
symlinks does not recurse or change links across filesystems.
symlinks has been written by Mark Lord <email@example.com>, the original developer and maintainer of the IDE Performance Package for linux, the Linux IDE Driver subsystem, hdparm, and a current day libata hacker.