Shell 查找并删除主文件夹中的所有符号链接,使其无法正常工作

Shell 查找并删除主文件夹中的所有符号链接,使其无法正常工作,shell,zsh,Shell,Zsh,我有以下资料: 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

我有以下资料:

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
read -p 'Delete old symlinks? y/n: ' prompt

if [ $prompt == [yY] ]
then    
   find ~ -type l | while read line
   do
      rm -v "$line"
   done
fi
我正在努力实现以下目标:

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
read -p 'Delete old symlinks? y/n: ' prompt

if [ $prompt == [yY] ]
then    
   find ~ -type l | while read line
   do
      rm -v "$line"
   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    
    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
read -p 'Delete old symlinks? y/n: ' prompt

if [ $prompt == [yY] ]
then    
   find ~ -type l | while read line
   do
      rm -v "$line"
   done
fi
第一部分列出了符号链接
Xargs
表示,对于每个返回值,都会发出一个
rm

这样如何

find ~ -type l | while read line
do
   rm -v "$line"
done

我能够解决这个问题,结果是if条件不起作用。谢谢你们的帮助,伙计们!:)

我尝试了它,替换了所有的for循环,但它不起作用,同样的问题,也没有任何作用。
rm--verbose“$line”
输出到底是什么?我一直在尝试其他更简单的方法和东西,但我无法解决它/我认为是
find
而不是
find
。我现在就试试。:)同样的问题。。。它一直告诉我符号链接已经存在,这就是我一直遇到的错误/我一直在尝试其他更简单的方法和东西,但我无法解决它/为了完整起见,您还可以
find/path-type l-delete
。您应该将
-0
添加到
xargs
中以处理空格。这可能是一对问答对,在其中可以询问标记为答案(OP自己的答案)的答案是否正确。如中所述,OP可以决定最适合其要求的解决方案。此外,他的解决方案作为问题的编辑给出。但是,那些试图提供帮助的人的努力没有得到认可,答案中的信息也没有任何价值。问题部分的问题,答案部分的答案。