The only way I know is:
find /home -xdev -samefile file1
But it's really slow. I would like to find a tool like locate
.
The real problems comes when you have a lot of file, I suppose the operation is O(n).
Here's a way:
find -printf "%i:\t%p
or similar to create a listing of all files prefixed by inode, and output to a temporary filecut -f 1 | sort | uniq -d
, and output that to a second temporary filefgrep -f
to load the second file as a list of strings to search and search the first temporary file.(When I wrote this, I interpreted the question as finding all files which had duplicate inodes. Of course, one could use the output of the first half of this as a kind of index, from inode to path, much like how locate works.)
On my own machine, I use these kinds of files a lot, and keep them sorted. I also have a text indexer application which can then apply binary search to quickly find all lines that have a common prefix. Such a tool ends up being quite useful for jobs like this.