エンジニアはこわくない

好きなように書く

findコマンドでシンボリックリンクを検索する方法


スポンサーリンク

f:id:tsujitaku50:20170406184531p:plain:w400

こんにちは、つじたく(@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オプションには他にも様々なオプションが用意されているので、

機会があれば、書きたいと思います。

おわり!!