& ldquo; find: отсутствует аргумент `-exec '& rdquo; при использовании & ldquo; -exec rm -f {} \ & rdquo;

Я запускаю эту команду:

~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\

я получил вывод ниже:

> IMAG1806.jpg

Error:
find: missing argument to `-exec'

Какова точная команда для поиска любого файла из текущего каталога и удаления с помощью -exec?

12
задан 19 April 2015 в 03:58

2 ответа

Вы пропустили a ; в конце (и пространство также между {} и ;). Корректная команда:

find . -type f -name "IMAG1806.jpg" -exec rm -f {} \;

; указывает на конец -exec предикат find.

Также обратите внимание, что мы использовали \; т.е. \ перед ; выйти из интерпретации ; оболочкой иначе окружите, будет рассматривать ; как конец целого find команда и find бросит ту же ошибку. Можно также использовать ';' вместо \;.

Вы использовали \ в конце это указывает, что Ваша оболочка продолжит брать вход через PS2 (обозначенный >), Вы ввели IMAG1806.jpg снова, таким образом, целая команда становится:

find . -type f -name "IMAG1806.jpg" -exec rm -f {}IMAG1806.jpg

Поскольку Вы видите, что это не допустимая команда вообще с IMAG1806.jpg в конце, никаком закрытии -exec предикат и без пространства между {} и \;.

29
ответ дан 19 April 2015 в 13:58

Вы можете просто

find . -type f -name 'IMAGE1806.jpg' -delete

Из страницы справочника:

Delete files; true if removal succeeded.  If the removal failed,
an  error message is issued.  If -delete fails, find's exit sta‐
tus will be nonzero (when it eventually exits).  Use of  -delete
automatically turns on the -depth option.
9
ответ дан 19 April 2015 в 13:58

Другие вопросы по тегам:

Похожие вопросы: