にファイルがあります~/file.txt
。
以下でハードリンクを作成しました。
ln ~/file.txt ~/test/hardfile.txt
とシンボリックリンクファイル:
ln -s ~/file.txt ~/test/symfile.txt
今、
- どのファイルがハードリンクであるかを確認するには?
- ハードリンクが続くファイルを見つける方法は?
私たちはシンボリックリンクファイルを見つけることができますが、->
ハードリンクはどうですか?
答え1
-rw--r--r-- 2 kamix users 5 Nov 17:10 hardfile.txt
^
これはファイル内のハードリンクの数です。 「ハードリンク」は、実際には2つのディレクトリエントリの間にあり、実際には同じファイルです。次の出力を見るとわかりますstat
。
stat hardfile.txt | grep -i inode
Device: 805h/2053d Inode: 1835019 Links: 2
リンク数が2であることにもう一度注意してください。これは、このファイルがどこかに別のリストがあることを示します。これが他のファイルと同じファイルであることを知っているのは、同じinode番号を持つからです。残念ながら、これが(inode番号を介して)見つけることができる唯一の方法です。
find
inodeを使って(たとえばを使用して)ファイルを見つけるための最良の方法についていくつかのアイデアがあります。このQ&A。
答え2
ハードリンクされたファイルには複数のリンク(2
許可フラグの後に続くリンク)があります。stat
次のコマンドを使用してこの情報を簡単に抽出できます。
$ stat --printf '%h\n' hardfile.txt
2
他の値と印刷方法の詳細については、stat
()のマンページを参照してください。man 1 stat