列出所有具有相同 inode 编号的文件?

its*_*_me 65 ls inode

假设当我ls -li在目录中执行操作时,我得到以下信息:

12353538 -rw-r--r-- 6 me me 1650 2013-01-10 16:33 fun.txt
Run Code Online (Sandbox Code Playgroud)

如输出所示,文件fun.txt6 个硬链接;并且 inode 编号是12353538

如何找到文件的所有硬链接,即具有相同 inode 编号的文件?

Hau*_*ing 66

find /mount/point -mount -samefile /mount/point/your/file
Run Code Online (Sandbox Code Playgroud)

  • Hauke,这取决于您使用的 find 版本。GNU 版本可能会这样做,但 BSD 版本不会,这在 Mac 上将无法正常工作。 (6认同)
  • @TheoneManis 我只是注意到 find 调用的其他部分不是必需的。`find` 足够聪明,可以隐式地使用它们。通常你必须给 `find` 一个搜索路径,并告诉它不会离开这些文件系统(通过符号链接或挂载点)。但是在查找硬链接时,很清楚要搜索的文件系统。 (4认同)
  • 您可能希望添加 `-xdev` 以避免下降到其他文件系统中的目录,否则您可能会在另一个文件系统中找到具有相同 inode 编号的另一个文件。 (4认同)
  • 请注意,如果您不在挂载点的根目录中, find 将仅探索当前文件夹的子文件夹。所以你真的应该说类似`find /mount/point -samefile /mount/point/your/file` (3认同)

sca*_*cai 59

如果您已经有了 inode 编号,则可以使用 find 的-inum选项:

find /mount/point -xdev -inum 12353538
Run Code Online (Sandbox Code Playgroud)

(一些find实现也支持-mount作为-xdev虽然 only-xdev是标准的等价物)。

  • 不要忘记 cd 到文件系统的根目录,或者将其指定为要查找的路径,例如 `find /mount/point -inum 12353538`。否则 find 将只在当前文件夹下面查找。 (13认同)