着信シンボリックリンクを探す[重複]

着信シンボリックリンクを探す[重複]

Linuxで(シンボリックリンクが相対的であるか絶対的であるかに関係なく)、特定のファイルを指すすべてのシンボリックリンクを見つけるための最良の方法は何ですか?ファイルシステム全体を検索する必要があることを知っています。

ベストアンサー1

GNUにはテストfindがあります-samefile。マニュアルページによると:

-samefile name
    File refers to the same inode as name. When -L is in 
    effect, this can include symbolic links.
$ find -L / -samefile /path/to/file

/path/to/fileハードリンクとファイル自体を含むすべてのリンクを見つけます。シンボリックリンクのみが必要な場合は、find()の結果を別々にテストできますtest -L

その影響を理解し-L、検索に問題がないことを確認する必要があります。

注:ドキュメントは同じinode番号を持つファイルを見つけることを示していますが、ファイルシステム全体で動作しているようです。

たとえば、/homeと/tmpは独立したファイルシステムです。

$ touch ~/testfile
$ ln -s ~/testfile /tmp/foo
$ ln -s /tmp/foo /tmp/bar
$ mkdir /tmp/x
$ ln -s ~/testfile /tmp/x/baz
$ find -L /tmp -samefile ~/testfile
/tmp/bar
/tmp/foo
/tmp/x/baz

これが ~/testfile へのシンボリックリンクである /tmp/foo へのシンボリックリンクである /tmp/bar をどのように返すかをご覧ください。ターゲットファイルへの直接シンボリックリンクを見つけたい場合は機能しません。

おすすめ記事