Я запускаю эту команду:
~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\
я получил вывод ниже:
> IMAG1806.jpg
Error:
find: missing argument to `-exec'
Какова точная команда для поиска любого файла из текущего каталога и удаления с помощью -exec
?
Вы пропустили 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
предикат и без пространства между {}
и \;
.
Вы можете просто
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.