Find
如何在 Linux 中有效地跟踪硬連結?
軟連結很容易通過
readlink
etc 追踪到原始文件……但我很難追踪到原始文件的硬連結。$ ll -i /usr/bin/bash /bin/bash 1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /bin/bash* 1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /usr/bin/bash* ^
上面是預期的 - 很酷 - > 兩個文件都指向同一個 inode 1310813
(但連結數,用 表示
^
,顯示為 1。從 Gilles 回答可以理解原因)$ find / -samefile /bin/bash 2>/dev/null /usr/bin/bash
以上是預期的 - 所以沒有問題。
$ find / -samefile /usr/bin/bash 2>/dev/null /usr/bin/bash
上面不酷。如何使用該文件作為參考來跟踪原始文件或每個硬連結?
/usr/bin/bash
奇怪 - 下面也沒有幫助。
$ find / -inum 1310813 2>/dev/null /usr/bin/bash
一是硬連結的情況下沒有原始文件;所有的硬連結都是平等的。
但是,這裡不涉及硬連結,如 1
ls -l
的輸出中的連結計數所示:$ ll -i /usr/bin/bash /bin/bash 1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /bin/bash* 1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /usr/bin/bash*
您的問題是由於符號連結而出現的,該
bin
符號連結指向usr/bin
. 要查找所有可用的路徑bash
,您需要使用以下選項告訴find
遵循符號連結:-L
$ find -L / -xdev -samefile /usr/bin/bash 2>/dev/null /usr/bin/rbash /usr/bin/bash /bin/rbash /bin/bash
我在
-xdev
這裡使用是因為我知道您的系統安裝在單個文件系統上;這避免了下降到/dev
,/proc
,/run
等/sys
。