我有一堆文件,以「-e」結尾,我想要刪除。osx找到exec rm找到:exec:未知的主要或運營商
$ find . -name "*-e" exec rm {} \;
find: exec: unknown primary or operator
正則表達式是以某種方式擴展,將所有東西混淆了嗎?
我有一堆文件,以「-e」結尾,我想要刪除。osx找到exec rm找到:exec:未知的主要或運營商
$ find . -name "*-e" exec rm {} \;
find: exec: unknown primary or operator
正則表達式是以某種方式擴展,將所有東西混淆了嗎?
它應該是:
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).
參見[這個問題](http://stackoverflow.com/questions/706196/how-to-remove-files-starting-with-double-hyphen),因爲'{}'會展開爲'./ some/path/-e'不被視爲一種選擇。 – BroSlow
我偶然發現了這個問題,因爲我正在尋找'find'和'exec'的例子,忽略了你正在做'rm'的事實! PSA:**這個命令將刪除一個目錄的內容!如果你只是在竊聽,請謹慎使用。**我學會了艱難的道路。 – Eric