2013-04-07 45 views
0

假设我有3个目录.git,.hg.svn某个地方的文件夹名为lol查找并删除多个参数目录

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

下这样做只为最后一个(.svn):

$ find lol -type d -name .git -o -name .hg -o -name .svn -delete 

E:这可以通过做ls太多,但并非没有shopt -s globstar(因为我不跟zsh这样做) :

$ shopt -s globstar 
$ rm -r $(ls -d ceaw/**/.{git,hg,svn}) 

E2:另一种解决方案的woulda:

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

回答

2

尝试使用-exec选项。

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

是的,我确实需要'-r'因为这些是_directories_但仍然只删除最后一个。 – Det 2013-04-07 16:50:25

+0

@请参阅更新。试着用圆括号。 – squiguy 2013-04-07 16:53:41

+0

这样比较好,但是不打印'find:\ lol/.hg':所有删除的文件或目录错误都没有,你最后应该加上'2>& - '。 – Det 2013-04-07 17:04:21