I think you are mistaken, since you think deleting all the "other" links to a file will save space. The only space you will save is a directory entry, and even that is questionable.
All hard links to a file are equal. There are no "duplicates". Files on Linux are really identified by which filesystem they are on, and what Inode number they are on that filesystem.
So when you create a file, you create an Inode, where the blocks actually live, and you create a link to that file in some directory. That link just points at that inode. If you do a hard link from that directory entry to another place, you just create a second directory entry someplace pointing to that same file.
If you run ls -i
on a file, you will see it's Inode number. If you want to find other hard links to that same inode, simply run:
find /TOP-OF-FILESYSTEM -type f -inum INODE-NUMBER
Where TOP-OF-FILESYSTEM is the mount point for that filesystem, INODE-NUMBER is the inode number for the file in question. Note that "-type f" is not mandatory but just speeds up the search since you only will look for files.
Note that running ls -il
on a file also (by default) it's inode number.
You can test all of this by going to a scratch directory and creating a file, then creating another link to it:
cd ~/tmp
date > temp1
ln tmep1 temp2
ls -l temp*
find . ! -type d -links +1
finds files that are linked to more than one directory.