Nesse caso, você pode contornar a gramática exec do find
capturando uma expressão de chave e usando uma referência de retorno no texto de substituição:
$ cat f1 f2
f1: hello{}a
f2: hello{}a
$ find . -type f -exec sed -i 's/hello\([{][}]\)a/hellob/g' '{}' +
$ cat f1 f2
f1: hello{}b
f2: hello{}b
Ou, mais simplesmente (como observado nos comentários):
find "$dir" -type f -exec sed -i 's/\(hello[{]}\)a/b/g' {} +
Observe que a opção -i
para Sed não é portátil e não funcionará em todos os lugares. O comando dado funcionará apenas no GNU Sed.
Para detalhes, consulte: