【问题标题】:Searching Directories and Removing Folders and Files in Bash在 Bash 中搜索目录并删除文件夹和文件
【发布时间】:2014-03-19 15:05:47
【问题描述】:

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

cp -R vendor/* .

然后我有第二个命令遍历任何文件夹,接受供应商文件夹,在组件目录中查找 .git/、'.gitignore' 和 Documentation/ 并删除它们。然而:

  • 我不认为它是递归的
  • 它实际上并没有删除这些文件和目录,无论是因为最高点还是因为权限(我应该添加 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  

现在如果是权限错误,我不会知道,因为我希望它忽略任何错误并继续执行脚本。

有什么想法吗?

【问题讨论】:

    标签: bash


    【解决方案1】:

    我认为问题在于选项-prune。无论如何,这可能对你有用......

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

    【讨论】:

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