lukmac
lukmac

Reputation: 4821

symbolic link: find all files that link to this file

Hallo all, I need to do this in linux:

How to do it? Thanks!

Upvotes: 149

Views: 110158

Answers (3)

Nik
Nik

Reputation: 2961

I prefer to use the symlinks utility, which also is handy when searching for broken symlinks. Install by:

sudo apt install symlinks

Show all symlinks in current folder and subfolders:

symlinks -rv .
  • -r: recursive
  • -v: verbose (show all symlinks, not only broken ones)

To find a specific symlink, just grep:

symlinks -rv . | grep foo.txt

Upvotes: 10

DigitalRoss
DigitalRoss

Reputation: 146043

It depends, if you are trying to find links to a specific file that is called foo.txt, then this is the only good way:

find -L / -samefile path/to/foo.txt

On the other hand, if you are just trying to find links to any file that happens to be named foo.txt, then something like

find / -lname foo.txt

or

find . -lname \*foo.txt # ignore leading pathname components

Upvotes: 180

dogbane
dogbane

Reputation: 274522

Find the inode number of the file and then search for all files with the same inode number:

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

Alternatively, try the lname option of find, but this won't work if you have relative symlinks e.g. a -> ../foo.txt

$ find . -lname /path/to/foo.txt

Upvotes: 28

Related Questions