一次更改多个符号链接目标

一次更改多个符号链接目标

最近,我按照苹果文档在 osx 中更改了我的用户名。我的主目录下有sh和目录。bin

通常我会写下来sh/foo.sh并链接起来bin/foo以便使用它。

更改用户名后,所有符号链接都指向包含旧用户名的路径。有没有办法一次性替换符号链接中的所有用户名?

旧用户名足够长且唯一,与路径中的其他字符串不匹配。

答案1

你不能重新创建符号链接吗?

cd ~/bin; for f in ../sh/*.sh; do ln -sf $f $(basename $f .sh); done

其他选择:

  • cd ~/bin; find . -lname '/Users/oldname/sh/*' -exec ln -sf ../sh/{}.sh {} \;
  • cd ~/bin; for f in *; do target=$(readlink $f); [[ $target = /Users/oldname/* ]] && ln -sf ${target/oldname/newname} .; done

ln不会覆盖未与符号链接的目标匹配的现有文件-ffind -lname

相关内容