してください、シンボリックリンクを新しいパスに変更したいと思います。
私のシンボリックリンク形式は次のとおりです。
lrwxrwxrwx. 1 s01 s01 56 Mar 22 13:17 zmjppcxlpq2m.png -> /home/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m
lrwxrwxrwx. 1 s01 s01 56 Mar 23 17:03 znviy3civtq3.jpg -> /home/s01/public_html/cgi-bin/uploads/00029/znviy3civtq3
lrwxrwxrwx. 1 s01 s01 56 Mar 24 20:07 zoi46hh4pu32.jpg -> /home/s01/public_html/cgi-bin/uploads/00029/zoi46hh4pu32
lrwxrwxrwx. 1 s01 s01 56 Mar 23 18:22 zqt0h1gy9e4c.png -> /home/s01/public_html/cgi-bin/uploads/00029/zqt0h1gy9e4c
/home
すべてのファイルをから新しいセクションに移動しました。/home2
だから、すべてのシンボリックリンクを新しいパスに変更したいと思います。例:前:
zmjppcxlpq2m.png -> /home/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m
ありますように
zmjppcxlpq2m.png -> /home2/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m
すべてのファイルについて。どうですか?
答え1
ln
古い宛先を削除せずにソフトリンクの宛先を強制的に変更できます。
ln -f -s /new/location/to/link newlink
たとえば、
ln -f -s /home2/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m zmjppcxlpq2m.png
あるいは、原子置換のためにmvを使用することができる。
ln -s /home2/s01/public_html/cgi-bin/uploads/00029/zmjppcxlpq2m new_zmjppcxlpq2m.png
mv new_zmjppcxlpq2m.png zmjppcxlpq2m.png
ディレクトリ内のすべてのリンクを変更するには、次のコマンドを試してください。
find /dir/with/symlinks/ -lname "/home/s01/public_html/cgi-bin/uploads/00029/*" \
-exec sh -c 'ln -sf `echo $(readlink $0) | sed s/home/home2/` $0' {} \;
コマンドを実行する前に、すべてのシンボリックリンクを慎重にバックアップしてください。