(相対的な方法ではなく)絶対的な方法でターゲットを識別するディレクトリ内のすべてのシンボリックリンクを(再帰的に)検出する方法は?
これらのリンクはディレクトリツリー全体を移動すると壊れる可能性があるため、それらを識別する方法が必要です。
ディレクトリツリーを移動すると(ディレクトリツリーのルートの外側を指している場合)、相対リンクも壊れる可能性がありますが、私の考えでは、これは次のようになりました。この問題。
ベストアンサー1
絶対リンクを見つけるためにサポートされている場合は、find
sオプションを使用できます-lname
(少なくともGNU、FreeBSD、およびmacOSで利用可能find
)。find
find . -type l -lname '/*'
これを行うには、シェルワイルドカードマッチングを使用してfind
シンボリックリンクのファイル名とその内容(ターゲット)を印刷する必要があります/*
。
厳密に言えば、/
POSIXは、1つまたは3つ以上で始まる絶対パス名を指定します。/
;それと一致させるには、次のものを使用できます
find . -lname '/*' ! -lname '//*' -o -lname '///*'
//foo/barは/foo/barとどのようなシステムで異なっていますか?詳細があります。
(ありがとうございます。桂里-lname
これはGNU固有のものであることを示します。FD0少なくともFreeBSDとmacOSでも実際に使用できることは言及する価値があります。スティーブン・チャジェラスPOSIX 絶対パス名定義を呼び出すために使用されます。 )