2013-04-07 29 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