Bash 查找并删除多个参数目录

Bash 查找并删除多个参数目录,bash,find,ls,Bash,Find,Ls,假设我在名为lol的文件夹中有3个目录.git、.hg和.svn 我如何找到并删除所有这些 以下仅对最后一个(.svn)执行此操作: E:这也可以用ls来完成,但不能没有shopt-s globstar(因为我不是用zsh): E2:另一种解决方案是: $ find lol -type d -name .git -o -name .hg -o -name .svn | xargs rm -rf 尝试改用-exec选项 find lol -depth -type d \( -name .git

假设我在名为
lol
的文件夹中有3个目录
.git
.hg
.svn

我如何找到并删除所有这些

以下仅对最后一个(
.svn
)执行此操作:

E:这也可以用
ls
来完成,但不能没有
shopt-s globstar
(因为我不是用
zsh
):

E2:另一种解决方案是:

$ find lol -type d -name .git -o -name .hg -o -name .svn | xargs rm -rf

尝试改用
-exec
选项

find lol -depth -type d \( -name .git -o -name .hg -o -name .svn \) -exec rm -r '{}' \;

是的,我确实需要
-r
,因为这些是目录,但仍然只删除最后一个。这样更好,但不打印
查找:`lol/.hg':没有这样的文件或目录
错误,所有被删除的文件或目录,你应该在最后添加类似
2>&-
的内容。@Det如果目录不存在,这是什么?我想是这样的:P.您可以使用
-depth
根本不获取这些错误。否则它将被删除,然后由find再次处理。@mariux很好,我将添加它。
$ find lol -type d -name .git -o -name .hg -o -name .svn | xargs rm -rf
find lol -depth -type d \( -name .git -o -name .hg -o -name .svn \) -exec rm -r '{}' \;