最近,我按照苹果文档在 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
不会覆盖未与符号链接的目标匹配的现有文件-f
。find -lname