모든 심볼릭 링크를 새 경로로 변경하는 방법

모든 심볼릭 링크를 새 경로로 변경하는 방법

제발, 심볼릭 링크를 새로운 경로로 변경하고 싶습니다.
내 심볼릭 링크 형식은 다음과 같습니다.

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' {} \;

명령을 실행하기 전에 모든 심볼릭 링크를 주의 깊게 백업하십시오.

관련 정보