ディレクトリツリーですべての絶対リンクを検索する

ディレクトリツリーですべての絶対リンクを検索する

(相対的な方法ではなく)絶対的な方法でターゲットを識別するディレクトリ内のすべてのシンボリックリンクを(再帰的に)検出する方法は?

これらのリンクはディレクトリツリー全体を移動すると壊れる可能性があるため、それらを識別する方法が必要です。

ディレクトリツリーを移動すると(ディレクトリツリーのルートの外側を指している場合)、相対リンクも壊れる可能性がありますが、私の考えでは、これは次のようになりました。この問題

ベストアンサー1

絶対リンクを見つけるためにサポートされている場合は、findsオプションを使用できます-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 絶対パス名定義を呼び出すために使用されます。 )

おすすめ記事