답변:
이 명령은 작동해야합니다.
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/…