2015-01-13 27 views
12

我有一堆文件,以「-e」結尾,我想要刪除。osx找到exec rm找到:exec:未知的主要或運營商

$ find . -name "*-e" exec rm {} \; 
find: exec: unknown primary or operator 

正則表達式是以某種方式擴展,將所有東西混淆了嗎?

+0

參見[這個問題](http://stackoverflow.com/questions/706196/how-to-remove-files-starting-with-double-hyphen),因爲'{}'會展開爲'./ some/path/-e'不被視爲一種選擇。 – BroSlow

+0

我偶然發現了這個問題,因爲我正在尋找'find'和'exec'的例子,忽略了你正在做'rm'的事實! PSA:**這個命令將刪除一個目錄的內容!如果你只是在竊聽,請謹慎使用。**我學會了艱難的道路。 – Eric

回答

17

它應該是:

find . -name "*-e" -exec rm '{}' \; 

或者更好:

find . -name "*-e" -exec rm '{}' + 

man find

-exec utility [argument ...] {} + 
    Same as -exec, except that ``{}'' is replaced with as many pathnames as possible for 
    each invocation of utility. This behaviour is similar to that of xargs(1). 
+1

謝謝,但我得到這兩個相同的錯誤。 :( – freedrull

+2

啊,我正在使用'exec'而不是'-exec' .... – freedrull

+2

謝謝!!!!!!! – freedrull