如何找出文件是硬链接还是符号链接?

如何找出文件是硬链接还是符号链接?

我有一个文件在~/file.txt.

我通过以下方式创建了硬链接:

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

和一个符号链接文件:

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

现在,

  1. 如何找出哪个文件是硬链接?
  2. 如何找出硬链接跟随哪个文件?

我们可以通过 找到符号链接文件->,但是硬链接呢?

在此输入图像描述

答案1

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

这是文件所具有的硬链接的数量。 “硬链接”实际上是在两个目录条目之间;它们实际上是同一个文件。您可以通过查看以下输出来判断stat

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

请再次注意,链接数为 2,表明该文件在某处还有另一个列表。您之所以知道这是与另一个文件相同的文件,是因为它们具有相同的索引节点号;没有其他文件会有这个。不幸的是,这是找到它们的唯一方法(通过索引节点号)。

find关于如何最好地通过 inode (例如, with )查找文件有一些想法本次问答

答案2

硬链接文件有多个链接(2权限标志后面的链接)。您可以使用以下stat命令轻松提取此信息:

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

有关其他值以及如何打印它们的信息,请参阅stat( )的联机帮助页。man 1 stat

相关内容