Answers:
此命令应该起作用:
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/...