Toothrot Asked: 2017-12-04 14:10:24 +0800 CST2017-12-04 14:10:24 +0800 CST 2017-12-04 14:10:24 +0800 CST 符号链接所有点文件和目录 772 假设我有一个文件夹~/dot,其中包含一些文件和目录,例如 zshrc、Xresources和emacs.d. 如何为 中的所有符号创建符号链接,但符号链接以点 ( &c.)~开头?.zshrc 以及如何删除由第一个问题的答案创建的所有现有符号链接?(即我将如何卸载我的点文件。) bash zsh 2 个回答 Voted Best Answer Hauke Laging 2017-12-04T14:42:17+08:002017-12-04T14:42:17+08:00 创建符号链接 cd ~/dot for file in *; do ln -sf dot/"$file" ~/."$file" done 删除符号链接 cd for dotfile in .*; do test -L || continue target="$(readlink "$dotfile")" [[ $target =~ ^dot/ ]] && echo rm "$dotfile" done Stéphane Chazelas 2017-12-06T08:06:29+08:002017-12-06T08:06:29+08:00 既然你提到zsh: autoload zmv # best in ~/.zshrc: (cd && zmv -sL -v 'dot/(*)' '.$1') 要删除它们: (cd && files=(dot/*(:t)) && rm -vf -- .$^files(N@)) (如果您的实现不支持,请删除-vfor verbose )rm 对于每个文件,如果它是一个符号链接(无论它是否指向),它都会被dot/foo删除。或者,您可以这样做:.foodot/foo rm .*(@e'<[[ $REPLY -ef dot/${REPLY#.} ]]>') 如果.foo它与old/foo.
创建符号链接
删除符号链接
既然你提到
zsh
:要删除它们:
(如果您的实现不支持,请删除
-v
for verbose )rm
对于每个文件,如果它是一个符号链接(无论它是否指向),它都会被
dot/foo
删除。或者,您可以这样做:.foo
dot/foo
如果
.foo
它与old/foo
.