请,我想将符号链接更改为新路径
我的符号链接采用这种形式
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' {} \;
在执行任何命令之前请小心备份所有符号链接