ディレクトリにシンボリックリンクと異なる名前があるかどうかを見つける方法

ディレクトリにシンボリックリンクと異なる名前があるかどうかを見つける方法
lrwxrwxrwx.   1 oracle   oinstall    10 Oct 14 03:47 abc -> xyz
drwxr-xr-x.   6 oracle   oinstall     4 Oct 26 21:11 xyz

xyzにabcというシンボリックリンクがあることを確認したいと思います。

答え1

ファイルまたはディレクトリへの逆参照またはシンボリックリンクの数はありません。

たとえば、xyzディレクトリを削除することは完全に有効です。シンボリックリンクがあってもこれを防ぐことはできず、xyzのデータが破損するのを防ぐこともできません。すべてのシンボリックリンクは、そのリンクを開こうとしたときにのみ無効と認識され、「壊れたリンク」になります。

次の場合、状況は非常に異なります。ハードリンク

答え2

そしてzsh

print -rC1 - **/*(ND@e['[[ $REPLY -ef xyz ]]'])

隠しディレクトリ()を含む任意の名前()、サブディレクトリ()、およびサブディレクトリレベル()を使用してシンボリックリンク()としてolumnprint rにあるawタイプのファイルは、一致するもの()がなくても問題を引き起こしません。ファイルシンボリックリンクが解決された後のファイルと同じです()。1 C@***/DNxyz-ef

また、他のシンボリックリンクやxyz


ターゲットがリテラル文字列であるシンボリックリンクを見つけるには、xyz次のようにします。

find . -lname xyz

答え3

abc現在のディレクトリでfilesという名前のすべてのリンクを見つけるには、xyz次のコマンドを使用します。

find -L / -samefile `readlink -f xyz` -name abc

readlink -f xyzファイルのフルパスに置き換えることができます(実際には現在のディレクトリのファイルに対して実行されます)。

正しいリンク名を知っていますが、xyz任意の名前のファイルへのすべてのリンクを見つけるには、name次のように省略できます。

find -L / -samefile `readlink -f xyz`

2> /dev/null「許可拒否」警告を抑制するためにコマンドの最後に追加することもできます。

関連情報