Um -exec
precisa ser finalizado com ;
ou +
. O ;
faz com que o comando seja executado uma vez por nome de arquivo encontrado, enquanto +
faz com que o comando seja executado uma vez para todos os nomes de arquivos.
Aqui está um exemplo de trabalho:
find ! -iname "*.JPG" -exec dirname {} \;
Algumas diferenças notáveis de suas tentativas:
- Deve haver um espaço entre
{}
e\;
- O
;
deve ter escape, porque é um metacaractere do shell. - Como @muru apontou em sua resposta,
-iname
usa glob, não regex