답변:
이 명령은 작동해야합니다.
find -type l -exec bash -c 'ln -f "$(readlink -m "$0")" "$0"' {} \;
작동 방식 :
find -type l 현재 디렉토리에서 모든 링크를 찾습니다.
-exec bash -c '...' {} \;bash를 실행하여 실행 ...합니다.
{}bash가으로 액세스 할 수있는 인수로 현재 처리중인 링크의 이름을 전달 합니다 $0.
readlink -m "$0" 심볼릭 링크 대상의 절대 경로를 반환합니다.
ln -f "$(readlink -m "$0")" "$0"대상에 대한 하드 링크로 -f기호 링크 $0를 겹쳐 씁니다 ( ) .
어떤 이유로 든 링크를 변환 할 수없는 경우 링크는 그대로 유지되며 ln은 오류 메시지를 인쇄합니다.
bash및에 대한 절대 경로를 지정하는 것으로 충분하지 ln않습니까?
-e스위치가이를 수정한다는 것입니다.
brew install coreutils과 같습니다 find * -type l -exec bash -c 'ln -f "$(greadlink -m "$0")" "$0"' {} \;.
cp -aH) 도 참조하십시오 . [1] : unix.stackexchange.com/questions/94185/…