在Bash中搜索目录并删除文件夹和文件

在Bash中搜索目录并删除文件夹和文件,bash,Bash,我有一个bash脚本,它进入components/并运行以下命令: cp-R供应商/*。 然后,我有第二个命令,它遍历任何文件夹,接受components目录lookinf get.git/,“.gitignore”和Documentation/中的vendor文件夹,并删除它们。然而: 我不认为它是递归的 它实际上并没有删除那些文件和目录,或者是因为它的顶层,或者是因为它的权限(我应该添加sudo吗) 从供应商处复制的目录可能如下所示: something/ child-direc

我有一个bash脚本,它进入
components/
并运行以下命令:

cp-R供应商/*。

然后,我有第二个命令,它遍历任何文件夹,接受components目录lookinf get
.git/
,“.gitignore”和
Documentation/
中的vendor文件夹,并删除它们。然而:

  • 我不认为它是递归的
  • 它实际上并没有删除那些文件和目录,或者是因为它的顶层,或者是因为它的权限(我应该添加sudo吗)
从供应商处复制的目录可能如下所示:

something/
    child-directory/
        .git/ // -- Should be removed.
有关的命令是:

  find -name vendor -prune -o \( -name ".git" -o -name ".gitignore" -o -name "Documentation" \) -prune -exec rm -     rf "{}" \; 2> /dev/null || true  
现在,如果它是一个权限错误,我不会知道它,因为我希望它忽略任何错误并继续脚本


有什么想法吗?

我想问题出在
-prune
选项上。不管怎样,这可能对你有用

find vendor -name '.git' -o -name '.gitignore' -o -name 'Documentation' | xargs rm -rf

它不起作用。当它应该忽略供应商时,它会删除我在供应商中告诉它的所有内容。