tl; dr: -delete не требуется для POSIX, -exec есть.
факты
Страница справки POSIX 1003.1 для find определяет -exec но не -delete .
Это означает, что -exec должен работать практически везде. Я был бы удивлен, find что есть -delete без -exec . Обратное вполне возможно. Особенно легкие системы, которые используют busybox обычно предоставляют только основные параметры командной строки.
Например, у меня есть OpenWRT на одном из моих маршрутизаторов, и его find понимает -exec , не понимает -delete .
Отсутствие -delete не имеет большого значения, если у вас есть -exec rm … . С другой стороны -delete не может заменить -exec в целом. Это мудрый дизайн, позволяющий сначала опустить -delete .
Личный опыт, наблюдения и мнения
Выше должно быть основной причиной, почему -exec rm {} \; так широко рекомендуется. Вторичным может быть эффект снежного кома. Пользователи читают статьи и примеры, знакомятся с -exec и публикуют свои собственные команды (например, здесь, в Super User). Некоторые из них могут даже не знать, что -delete существует.
Несколько раз я видел (или давал) замечания типа «Вы можете использовать вместо этого -delete ». И ответы были такие: «Спасибо, я этого не знал». Я не помню ни одного ответа «Я знаю, но это не POSIX».
Сказав все это, я склонен упоминать -delete всякий раз, когда -exec rm {} \; появляется. Причина в том, что -delete не создает новый процесс, а -exec rm {} \; вызывает отдельный rm для каждого соответствующего файла. Если вы не можете использовать -delete то ваша следующая мысль должна быть -exec rm {} + которая может удалить несколько файлов одним rm (тем не менее, при необходимости он вызовет rm более одного раза).
Почему -exec … + рекомендуется? Это может быть из-за его ограничений. Я могу представить, как неопытный пользователь думает: «Это работает с rm , позвольте мне использовать его с mv !«Тогда -exec mv {} foo/ + не работает, потому что {} должен быть в конце, непосредственно перед + . Пользователь расстроен и бежит обратно к маме Windows.
Я рекомендую -delete как правило, безопасен здесь на Super User. Большинство вопросов указывают на "большие" ОС, команды find там богаты опциями. И даже если есть пользователь, чья find ограничена, я, вероятно, получу обратную связь. Он или она говорит, что решение не работает для них, и я предлагаю -exec rm … вместо этого, объясните проблему и т.д.
Отдельная статья, которая рекомендует -delete , не получит такой обратной связи. В случае каких-либо проблем пользователь просто перейдет на следующую ссылку, возвращенную Google.