Antes de tudo, verifique se você está usando aspas ASCII regulares como "e '(códigos ASCII 0x22e 0x27, respectivamente) em scripts de shell, porque o exemplo na sua postagem contém caracteres de aspas não padrão. Se você olhar de perto, eles parecerão um pouco diferentes. Provavelmente, esse é um erro de copiar e colar de um formato de documento rich text como Word, OOWriter ou até mesmo uma janela do navegador.
Como você está em um Mac, provavelmente possui a implementação do FreeBSD sed, nesse caso você deve escrever o comando desta maneira:
find . -name "*.java" -exec sed -i '' s/foo/bar/g {} +
(aqui usando em +vez de \;para evitar a execução de uma sedchamada por arquivo).
Na implementação do FreeBSD, seda -iflag precisa de um argumento: a extensão de um arquivo de backup. Por exemplo, com -i .bako comando faria um backup file1.txtcomo file1.txt.bakprimeiro antes de realizar a substituição do arquivo original. Usar um argumento vazio ''significa não usar um arquivo de backup, que parece ser o que você deseja.
O mesmo na implementação do GNU (ou NetBSD, OpenBSD, busybox) seria:
find . -name "*.java" -exec sed -i s/foo/bar/g {} +
Obrigado @bahamat e @Mikel e @ pieter-breed por melhorar minha resposta com seus comentários.
-exece tudo depois dele? Ele imprime os nomes dos arquivos Java? (Eu estou preocupado que você está usando aspas inteligentes em vez de aspas ASCII.)