findコマンドでシンボリックリンクを検索する方法
こんにちは、つじたく(@Tsuji_Taku50)です。
よく使用するコマンドの1つにfindコマンドがあるのですが、
findコマンドでシンボリックリンクを探す場合、どうするんだっけ?となったので調べました。
typeオプション
findコマンドにはデフォルトで様々なオプションが用意されていて、その中に1つに「typeオプション」が用意されています。
今回は「typeオプション」の中の「lオプション」を使用します。
(typeオプションは色んな使い方があるので、別記事にしようかなと思ってます)
# 「test」という名前のシンボリックリンクを探したい場合 % find / -name test -type l
上記のように使用します。
実際に試してみる
まずはシンボリックリンクが貼られていることを確認します。
% ls -l ~/.zshrc lrwxr-xr-x 1 xxx CATK\Domain Users 52 12 6 09:54 /Users/xxx/.zshrc -> /Users/xxx/Documents/gitWorkSpace/dotfiles/.zshrc
ちゃんと貼られていますね。
この状態で下記findコマンドを実行すると
% find / -name .zshrc /Users/xxx/.zshrc /Users/xxx/Documents/gitWorkSpace/dotfiles/.zshrc
シンボリックリンク元とシンボリックリンク先両方が表示されてしまいます。
これを見ただけは区別がつかないと思います。
そこで先程の「typeオプション」を使用します。
%find / -name .zshrc -type l /Users/xxx/.zshrc
このようにシンボリックリンクだけを対象に表示することが可能です。
まとめ
-type lを使用すれば、シンボリックリンクだけを表示させることが可能です。
findコマンドのtypeオプションには他にも様々なオプションが用意されているので、
機会があれば、書きたいと思います。
おわり!!