Linux
如何找到給定文件的所有硬連結?
我們如何找到給定文件的所有硬連結?即,在給定硬連結的情況下,找到指向同一文件的所有其他硬連結?
文件系統是否跟踪文件的硬連結?
文件的 inode 只儲存文件的硬連結數,不儲存硬連結,對吧?
如果呼叫了給定文件
/path/to/file
並且您想查找目前目錄下存在的所有硬連結,則使用:find . -samefile /path/to/file
以上是在 GNU find 上測試的。雖然
-samefile
不是POSIX ,但Mac OSX find和FreeBSD find也支持它。文件
來自 GNU
man find
:-samefile name
File 與 name 引用相同的 inode。當 -L 生效時,這可以包括符號連結。
find 和 ls 的區別
ls -l
列出文件或目錄的硬連結數。對於目錄,此數字大於 顯示的結果數find . -samefile
。原因在GNU 查找手冊中有解釋:一個目錄通常至少有兩個硬連結:在其父目錄中命名的
.
條目和目錄內部的條目。如果一個目錄有子目錄,每個子目錄也都有一個指向..
其父目錄的硬連結。和目錄條目通常不會被搜尋,除非它們在 find 命令行中被提及
.
。..
總之,
ls -l
將.
和..
目錄計為單獨的硬連結,但find . -samefile
不計入。