壊れたシンボリックリンクを新しい場所に修正

壊れたシンボリックリンクを新しい場所に修正

既存のWebサーバーから新しいWebサーバーに移動しました。フォルダ構造を変更したため、一部のシンボリックリンクは機能しません。これらのリンクを修正する簡単な方法があるかどうか疑問に思います。次のコマンドを含むリンクが見つかりました。

find -L . -type l -ls

リンクは次のとおりです。

./example/vondercode/releases/example.com/2.0/www/img/uploads -> /home/example/vondercode/uploads
./example2/www/img/uploads -> /home/example2/vondercode/uploads

リンクは次のようになります。

./example/vondercode/releases/example.com/2.0/www/img/uploads -> /var/www/html/example/vondercode/uploads
./example2/www/img/uploads -> /var/www/html/example2/vondercode/uploads

簡単に言えば、すべてを/home置き換える必要があります。/var/www/html これは可能ですか?

ベストアンサー1

「/home を /var/www/html に置き換える」場合、次のアプローチが機能します。

find . -type l -exec sh -c 'lnk="{}"; target="$(readlink '{}' | sed 's#/home#/var/www/html#')"; unlink "${lnk}"; ln -s "${target}" "${lnk}" ' \;

最初のバージョンが期待どおりに機能しなかったことを指摘したToby Speightに感謝します。これで問題が解決しました。

おすすめ記事