Linux

如何找到給定文件的所有硬連結?

  • November 10, 2021

我們如何找到給定文件的所有硬連結?即,在給定硬連結的情況下,找到指向同一文件的所有其他硬連結?

文件系統是否跟踪文件的硬連結?

文件的 inode 只儲存文件的硬連結數,不儲存硬連結,對吧?

如果呼叫了給定文件/path/to/file並且您想查找目前目錄下存在的所有硬連結,則使用:

find . -samefile /path/to/file 

以上是在 GNU find 上測試的。雖然-samefile不是POSIX ,但Mac OSX findFreeBSD find也支持它。

文件

來自 GNU man find

-samefile name

       File 與 name 引用相同的 inode。當 -L 生效時,這可以包括符號連結。

find 和 ls 的區別

ls -l列出文件或目錄的硬連結數。對於目錄,此數字大於 顯示的結果數find . -samefile。原因在GNU 查找手冊中有解釋:

一個目錄通常至少有兩個硬連結:在其父目錄中命名的.條目和目錄內部的條目。如果一個目錄有子目錄,每個子目錄也都有一個指向..其父目錄的硬連結。

和目錄條目通常不會被搜尋,除非它們在 find 命令行中被提及...

總之,ls -l...目錄計為單獨的硬連結,但find . -samefile不計入。

引用自:https://unix.stackexchange.com/questions/201920