Reputation: 4821
Hallo all, I need to do this in linux:
How to do it? Thanks!
Upvotes: 149
Views: 110158
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
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
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