2015-01-13 4 views
12

Ich habe eine Reihe von Dateien, die auf "-e" enden, die ich entfernen möchte.osx find exec rm find: exec: unbekannt primary oder operator

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

Ist die Regex in irgendeiner Weise erweitert, die alles versaut?

+0

See [diese Frage] (http://stackoverflow.com/questions/706196/how-to-remove-files-start-with-double-hyphen), obwohl nichts besonderes benötigt wird, da '{}' auf './Some/path/-e' erweitert werden kann nicht als Option behandelt werden. – BroSlow

+0

Ich bin über diese Frage gestolpert, als ich zum Beispiel nach Verwendungen von 'find' und' exec' gesucht habe und dabei übersehen habe, dass du ein 'rm' machst! PSA: ** Dieser Befehl löscht den Inhalt eines Verzeichnisses! Benutze es mit Vorsicht, wenn du nur herumhackst. ** Ich habe es auf die harte Tour gelernt. – Eric

Antwort

17

Es sollte sein:

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

Oder besser:

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

Per 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

Danke, aber ich bekomme den gleichen Fehler für beide. :( – freedrull

+2

Ah, ich benutzte 'exec' nicht' -exec' .... – freedrull

+2

Danke !!!!!!! – freedrull