stat -c "%i" 可提取文件 inode 编号,同 inode 且同文件系统即为硬链接;用 find -inum 或 -samefile 可查所有路径;%h≥2 表明存在硬链接,软链接需加-l才得目标inode。

在 Linux 中,stat 命令配合 -c "%i" 格式化选项可直接提取文件的 inode 编号,这是识别和排查硬链接关系最可靠的基础操作——因为所有指向同一数据块的硬链接必然共享同一个 inode 号。
理解 inode 与硬链接的本质关联
硬链接不是副本,而是对同一 inode 的多个目录项引用。只要两个文件的 inode 编号(%i)完全相同,且位于同一文件系统中,它们就是硬链接关系。注意:ln 创建硬链接时无法跨文件系统,因此比对前需确认 df . 输出一致。
用 stat -c "%i" 快速获取指定文件的 inode
执行以下命令即可输出纯数字形式的 inode 编号:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
-
stat -c "%i" filename—— 最简洁方式,适合脚本调用 -
stat -c "%n %i" file1 file2—— 同时查看多个文件名及对应 inode,便于横向比对 -
ls -i filename—— 替代方案,但输出含文件名前缀,不易直接用于自动化处理
批量扫描并找出共享 inode 的硬链接
若怀疑某文件存在隐藏硬链接,可在其所在目录执行:
-
find . -inum $(stat -c "%i" target_file) -ls—— 按 inode 号反查全部路径(含相对路径) -
find /path -xdev -samefile target_file -ls—— 更语义化的写法,-samefile内部即基于 inode 匹配,-xdev防止跨文件系统误匹配 - 对结果中列出的所有路径再次运行
stat -c "%i %n",验证 inode 是否真的一致
常见误区与验证要点
仅看文件名或内容相同不能断定是硬链接;软链接、复制文件、同名不同 inode 都会干扰判断:
-
stat -c "%i %h" file中的%h是硬链接计数(link count),值 ≥2 才说明该 inode 至少被两个目录项引用 - 软链接自身有独立 inode,
stat -c "%i" symlink显示的是链接文件自身的 inode,不是目标文件的——要用stat -L -c "%i"(-L跟随链接)才能看到目标 inode - 删除一个硬链接后,
%h会减 1;当计数归零且无进程打开时,inode 才真正释放










