Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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オプション指定時 リンク参照先の情報 シンボリックリンク自体の情報

落穂拾い

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

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

sengoku
テスト原理主義者。 記事は日々の記録です。2020年は、Java。2019年は、Angular/TypeScript/ASP.NET Core/C#が多めです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした