2009-11-27 59 views
14

我怎樣才能得到我的系統或某個目錄下所有鏈接文件的列表。我曾經創建鏈接,但隨着時間的推移它們變得難以管理。我想要一個目錄中所有這些鏈接的列表。誰能幫忙?如何找到Linux上其他目錄或文件基本上軟或硬鏈接的所有文件?

+1

我認爲這屬於serverfault – 2009-11-27 19:33:36

+0

什麼是serverfault? – DKSRathore 2009-11-27 19:35:37

+0

請嘗試在這裏:serverfault.com – 2009-11-27 19:38:18

回答

27

查找符號鏈接很簡單:

% find . -type l 

找到硬鏈接是棘手的,因爲如果有問題的目錄的子目錄中也有子目錄,然後將這些增加的硬鏈接數。這就是子目錄如何在UNIX中與其父母鏈接(這是每個子目錄中的..條目)。

如果你只是想找到鏈接文件(而不是目錄),這將工作:

% find . -type f \! -links 1 

這工作,因爲一個文件確實有硬鏈接將有一個鏈接數> 1和鏈接的文件有一個鏈接數== 1,因此這個命令將其鏈接數的所有文件<> 1

另外,對find新版本,你可以使用:

% find . -type f -links +1 

這與上述相同的原因起作用;不過,新版本的find可以帶+ n或-n,而不僅僅是一個數字。這相當於分別測試大於n或小於n。

+0

Wao,這是一個如此小的命令。謝謝Alnitak – DKSRathore 2009-11-27 19:50:15

+0

呃...文件是否可以有<1個鏈接?我的意思是,這不會使它成爲一個無文件的inode嗎? – naught101 2014-10-08 04:49:54

+0

@ naught101那麼,提供-1確實無法找到任何文件。 – Alnitak 2014-10-08 09:00:41

2

@OP,如果您有GNU查找,您可以使用-printf "%n",

find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum 
do 
echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum" 
# if 2 or more files have the same inode number, then they are hard links. 
# you can therefore count how many $inum that are the same and determine those hard links, which 
# you have to try doing yourself. 
done 
3
find/-xdev -samefile filename 
相關問題