Bash 为什么这个命令会爆炸

Bash 为什么这个命令会爆炸,bash,Bash,因此,我得到了这个答案,作为对前面一个问题的回答,作为递归查找目录中的文件并删除找到的文件和目录的答案: find \( -name ".git" -o -name ".gitignore" -o -name "Documentation" \) -exec rm -rf "{}" \; 这有两个问题: 一: 由于此错误,脚本的其余部分不会执行。现在我不想检查任何文件或文件夹。我不在乎它们是否存在,我想抑制这个错误 第二个问题是,我还得到了一个需要从搜索中排除的目录上的错误:vendor/ f

因此,我得到了这个答案,作为对前面一个问题的回答,作为递归查找目录中的文件并删除找到的文件和目录的答案:

find \( -name ".git" -o -name ".gitignore" -o -name "Documentation" \) -exec rm -rf "{}" \;
这有两个问题:

一:

由于此错误,脚本的其余部分不会执行。现在我不想检查任何文件或文件夹。我不在乎它们是否存在,我想抑制这个错误

第二个问题是,我还得到了一个需要从搜索中排除的目录上的错误:
vendor/

find: `./vendor/adam.balan/AisisAjax/.git': No such file or directory
我不想要它。我希望它不要打扰卖主


如何解决这两个问题?抑制和忽略。

问题是,您正在删除一个目录,该目录
查找
然后尝试下降到该目录。您可以使用
-prune
来防止:

find \( -name ".git" -o -name ".gitignore" -o -name "Documentation" \) -prune -exec rm -rf "{}" \;
要忽略所有错误,可以使用
2>/dev/null
挤压错误消息,并使用
|true
避免
设置-e
退出脚本:

find \( -name ".git" -o -name ".gitignore" -o -name "Documentation" \) -prune -exec rm -rf "{}" \; 2> /dev/null || true
最后,为了避免降序任何名为“vendor”的目录,您可以再次使用
-prune

find -name vendor -prune -o \( -name ".git" -o -name ".gitignore" -o -name "Documentation" \) -prune -exec rm -rf "{}" \; 2> /dev/null || true

问题是您正在删除一个目录,该目录
查找
,然后尝试下降到该目录中。您可以使用
-prune
来防止:

find \( -name ".git" -o -name ".gitignore" -o -name "Documentation" \) -prune -exec rm -rf "{}" \;
要忽略所有错误,可以使用
2>/dev/null
挤压错误消息,并使用
|true
避免
设置-e
退出脚本:

find \( -name ".git" -o -name ".gitignore" -o -name "Documentation" \) -prune -exec rm -rf "{}" \; 2> /dev/null || true
最后,为了避免降序任何名为“vendor”的目录,您可以再次使用
-prune

find -name vendor -prune -o \( -name ".git" -o -name ".gitignore" -o -name "Documentation" \) -prune -exec rm -rf "{}" \; 2> /dev/null || true