A -exec
нужно заканчивать на ;
или +
. С помощью ;
команда выполняется один раз для каждого найденного имени файла, а с помощью +
команда выполняется один раз для всех имён файлов.
Вот рабочий пример:
find ! -iname "*.JPG" -exec dirname {} \;
Некоторые заметные отличия от Ваших попыток:
{}
и \;
;
должно быть освобождено, так как это метахарактер оболочки. -имя
принимает глобус, а не регексСм. также [1133611] комплект и магазин - почему два?