How to find out a file is hard link or symlink?

50,427

Solution 1

-rw--r--r-- 2 kamix users 5 Nov 17:10 hardfile.txt
            ^

That's the number of hard links the file has. A "hard link" is actually between two directory entries; they're really the same file. You can tell by looking at the output from stat:

stat hardlink.file | grep -i inode
Device: 805h/2053d      Inode: 1835019     Links: 2

Notice again the number of links is 2, indicating there's another listing for this file somewhere. The reason you know this is the same file as another is they have the same inode number; no other file will have that. Unfortunately, this is the only way to find them (by inode number).

There are some ideas about how best to find a file by inode (e.g., with find) in this Q&A.

Solution 2

A hard linked file has more than one link (the 2 after the permission flags). You can use the stat command to easily extract this information:

$ stat --printf '%h\n' hardfile.txt
2

See the manpage for stat (man 1 stat) for information about other values and how to print them.

Share:
50,427

Related videos on Youtube

Hamed Kamrava
Author by

Hamed Kamrava

DevOps enthusiast

Updated on September 18, 2022

Comments

  • Hamed Kamrava
    Hamed Kamrava almost 2 years

    I have a file in ~/file.txt.

    I have created a hard link by :

    ln ~/file.txt ~/test/hardfile.txt
    

    and a symlink file :

    ln -s ~/file.txt ~/test/symfile.txt
    

    Now,

    1. How can I find out that which file is hard link ?
    2. How can I find out hard link follows which file?

    We can find symlink file by ->, but what about hard link?

    enter image description here

  • Hamed Kamrava
    Hamed Kamrava over 9 years
    Also, Can I find out hard link file follows which file?
  • goldilocks
    goldilocks over 9 years
    Not directly. That information isn't kept anywhere. unix.stackexchange.com/a/75529/25985