如何查找给定文件的所有硬链接?

如何查找给定文件的所有硬链接?

我们如何找到给定文件的所有硬链接?即,在给定硬链接的情况下,找到同一文件的所有其他硬链接?

文件系统是否跟踪文件的硬链接?

文件的inode只存储该文件的硬链接数量,而不存储硬链接,对吗?

答案1

如果调用给定文件/path/to/file并且您想要查找当前目录下存在的所有硬链接,请使用:

find . -samefile /path/to/file 

以上是在 GNU find 上测试的。虽然-samefile不是 POSIX,它还支持Mac OSX 查找FreeBSD 查找

文档

来自 GNU man find

-samefile name
       文件引用与 name 相同的 inode。当 -L 有效时,这可以包括符号链接。

find 和 ls 之间的区别

ls -l列出文件或目录的硬链接数。对于目录,此数字大于 所显示的结果数find . -samefile。其原因在GNU 查找手册:

目录通常至少有两个硬链接:其父目录中指定的条目和.目录内部的条目。如果一个目录有子目录,那么每个子目录都有一个指向..其父目录的硬链接。

除非在 find 命令行中提及,否则通常不会搜索.和目录条目。..

总之,ls -l...目录计为单独的硬链接,但find . -samefile事实并非如此。

相关内容