Pytanie osx find exec rm find: exec: unknown primary lub operator


Mam kilka plików, które kończą się na "-e", które chcę usunąć.

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

Czy regex rozwija się w jakiś sposób, który wszystko psuje?


13
2018-01-13 05:50


pochodzenie


Widzieć to pytanie, ale od tego czasu nic specjalnego nie jest potrzebne {} rozszerzy się do ./some/path/-e który nie może być traktowany jako opcja. - BroSlow
Natknąłem się na to pytanie, ponieważ szukałem przykładów zastosowań find i exec, z widokiem na fakt, że robisz rm! PSA: To polecenie usunie zawartość katalogu! Zachowaj ostrożność, jeśli po prostu hakujesz. Nauczyłem się na własnej skórze. - Eric


Odpowiedzi:


Powinno być:

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

Albo lepiej:

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

Zgodnie z 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).

20
2018-01-13 05:52



Dzięki, ale dostaję ten sam błąd w obu przypadkach. :( - freedrull
Ah, używałem exec nie -exec.... - freedrull
Dziękuję Ci!!!!!!! - freedrull