UNIXでのファイルへのすべてのシンボリックリンクとハードリンクの検索


9

UNIXファイルシステムに特定のファイルがある場合、bashを使用して、そのファイルへのすべてのリンク(シンボリックとハードの両方)を見つける方法はありますか?それぞれに異なるコマンドが必要な場合、それらは何ですか?

回答:


8

GNUでこれを試してくださいfind

find /start/dir -L -samefile /file/to/check -exec ls -li {} \;

出力例:

1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2
1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1
2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1

-ls代わりに使用することもできます-execが、個々のファイルではなく、ターゲットファイルのiノードおよびその他の情報が表示されます。


この出力はハードリンクとsymリンクを示していますか?->矢印で示されるシンボリックリンク?
aaaidan 2010年

@aaaidan:はい、そうです。x1とx2のiノード番号は同じで、ハードリンクであることを示しています。矢印はシンボリックリンクを示します。とを使用する-L-samefile、両方が表示されます。省略した場合-L、シンボリックリンクはたどられません(を参照man find)。
追って通知があるまで一時停止。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.