- ベストアンサー
シンボリックリンクからの被参照を調べたい
サーバー上の要らなくなったディレクトリを削除しようと思っています。 ただ、その配下の階層のどこかに、他からシンボリックリンクで参照されているファイルやフォルダがあるかもしれません。 そういう状況の有無を手軽に調べる方法はあるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どのシンボリックリンクが参照しているか分からなくても良いなら、 こんな感じでできます。 find / -type l -exec readlink {} \; | grep -cFx <検索対象のファイル> →参照されている数を表示します。 どのシンボリックリンクが参照しているか分かる必要があるなら、 こんな感じでできます。 find / -type l | while read LINK; do readlink "$LINK" | grep -Fx <検索対象のファイル> >/dev/null && echo "$LINK" done
その他の回答 (1)
- ki073
- ベストアンサー率77% (491/634)
回答No.1
多分ファイル自体はどこからシンボリックリンクされているかは知らないと思いますので、 まずシンボリックリンクを全体から探します。 find / -type l -ls でシンボリックリンクファイルとリンク先が出力されます。 それをもとにリンクされているか探せます。
質問者
お礼
ありがとうございました! この方法を頼りに探せる範囲内の数のシンボリックリンクでした。 今回削除したいディレクトリ内のファイルやフォルダを参照するシンボリックリンクはありませんでした。
お礼
ご回答ありがとうございます。 頂いたアドバイスのように、一発で調べる方法を知りたいと思っていました。 ただ、いただいたアドバイスの最初のものを試しましたが、私の打ち込み方が悪かったのか、うまく行きませんでした。 ご回答いただいたお二人のものを合わせた感じで find ~/www/ -type l -ls | grep -E '\->.+/dirName/.+' とやってみたところ、消したいディレクトリ(dirName)配下のファイルやフォルダを参照先にしたシンボリックリンクがリストアップされました。 ただし、消したいディレクトリと同名のディレクトリが他の場所に存在する場合、そのディレクトリ配下のものを参照するものもリストアップされると思います。が、ここまで出来ればあとはなんとかなります。 ありがとうございました。
補足
望んでいる方向の内容をご回答いただいたのでベストアンサーとさせていただきます。