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

Ham*_*ava 23 filesystems hard-link symlink

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

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

ln ~/file.txt ~/test/hardfile.txt
Run Code Online (Sandbox Code Playgroud)

和一个符号链接文件:

ln -s ~/file.txt ~/test/symfile.txt
Run Code Online (Sandbox Code Playgroud)

现在,

  1. 我怎样才能找出哪个文件是硬链接?
  2. 如何找出哪个文件后面的硬链接?

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

在此处输入图片说明

gol*_*cks 36

-rw--r--r-- 2 kamix users 5 Nov 17:10 hardfile.txt
            ^
Run Code Online (Sandbox Code Playgroud)

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

stat hardlink.file | grep -i inode
Device: 805h/2053d      Inode: 1835019     Links: 2
Run Code Online (Sandbox Code Playgroud)

再次注意链接的数量是 2,这表明在某处还有该文件的另一个列表。您知道这是与另一个文件相同的文件的原因是它们具有相同的 inode 编号;没有其他文件会有那个。不幸的是,这是找到它们的唯一方法(通过 inode 编号)。

find这个 Q&A 中有一些关于如何最好地通过 inode(例如, with )查找文件的想法。


wur*_*tel 5

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

$ stat --printf '%h\n' hardfile.txt
2
Run Code Online (Sandbox Code Playgroud)

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

  • 不直接。这些信息不会保存在任何地方。http://unix.stackexchange.com/a/75529/25985 (4认同)