4

我有以下内容:

read -p 'Delete old symlinks? y/n: ' prompt

if [ $prompt == [yY] ]
then    
    current_dir=$(pwd)
    script_dir=$(dirname $0)

    if [ $script_dir = '.' ]
    then
        script_dir="$current_dir"
    fi

    for sym in {find $PATH -type l -xtype d -lname "~"}
    do
        rm $sym
        echo "Removed: $sym"
    done
fi

我想要达到的目标如下:

  • 如果提示等于 y(是)然后:找到~(主目录)中的所有符号链接并对它们执行 for 循环,这将删除它们并输出它删除的那个。

虽然现在它不执行删除部分,但其余部分工作正常。我没有包括有效的部分,它只是一堆ln -s.

我在 Mac OS X Mountain Lion (10.8.2) 中,使用 Zsh 作为 shell,这在一个.sh文件中。

我遇到的问题是什么都没有发生,所以它只是说:

ln: /Users/eduan/.vim/vim: File exists
ln: /Users/eduan/.vimrc: File exists
ln: /Users/eduan/.gvimrc: File exists
Done...

等等

非常感谢您提供的任何帮助!

编辑:
我现在有以下内容:

read -p 'Delete old symlinks? y/n: ' prompt

if [ $prompt == [yY] ]
then    
   find ~ -type l | while read line
   do
      rm -v "$line"
   done
fi
4

3 回答 3

16
find /path -type l | xargs rm

第一部分列出了符号链接。Xargs说对于每个返回的值发出一个rm

于 2012-11-21T01:07:58.040 回答
2

这个怎么样?

find ~ -type l | while read line
do
   rm -v "$line"
done
于 2012-11-21T01:10:27.373 回答
-1

我能够解决问题,结果是 if 条件不起作用。无论如何,感谢您的帮助!:)

于 2012-11-25T03:31:19.647 回答