LoginSignup
3
3

More than 5 years have passed since last update.

【FreeBSD】リンク切れのシンボリックリンクを探す方法FreeBSD編

Last updated at Posted at 2016-06-06

Linuxの場合は、-xtypeオプションで探せるそうです。
参照→リンク切れのシンボリックリンクを探す方法

FreeBSDの場合は、以下のコマンドで探せます。

find -L 検索対象ディレクトリ -type l

解説

まずシンボリックリンクを探す

探したいものはシンボリックリンクなので、-type lという検索条件を使います。

ただ、この条件だけでは、リンク参照先の有無に関わらず、すべてのシンボリックリンクが出力されます。

リンク参照先の情報を読むようにする

デフォルトでは、リンク自体の情報を読む

何もオプションを指定しないときは、findは次のように動作します。

 -P      各シンボリックリンクのために返されたファイル情報とファイルタイプ
         (stat(2) 参照) は、リンク自体のものとなります。これは、デフォルト
         です。

http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=find&dir=jpman-11.0.2%2Fman&sect=0
より

そのため、-type lという検索条件で、すべてのシンボリックリンクが出力されるのです。

リンク参照先の情報を読むオプション

-Lオプションをつけると、findの動作が次のように変わります。

 -L      各シンボリックリンクのために返されたファイル情報とファイルタイプ
         (stat(2) 参照) は、リンク自体ではなく、リンクによって参照される
         ファイルのものとなります。参照されたファイルが存在しないなら、
         ファイル情報とタイプは、リンク自体のものとなります。

         このオプションは、推奨されない -follow プライマリと同等です。

なかなかむつかしいですね。。。

-Lオプションを付けると、リンクの参照先が存在するときは参照先の情報を読み込み、存在しないときはリンク自体の情報を読みます。

したがって、-type lという条件で参照先が存在しないシンボリックリンクを検索できるのです。

findの挙動まとめ

findが検索条件に使う情報をまとめるとこんな感じです。

リンク先が…… 存在する 存在しない
-Pオプション指定時(デフォルト) シンボリックリンク自体の情報 シンボリックリンク自体の情報
-Lオプション指定時 リンク参照先の情報 シンボリックリンク自体の情報

落穂拾い

リンク参照先がシンボリックリンクだったら……

リンクついえるところまで辿ってくれるみたいです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3