В первую очередь, удостоверьтесь, что Вы используете регулярные кавычки ASCII как "
и '
(коды ASCII 0x22
и 0x27
, соответственно) в сценариях оболочки, потому что пример в Вашем сообщении содержит нестандартные символы кавычки. Если Вы смотрите тесно, они выглядят немного отличающимися. По всей вероятности это - ошибка вставки копии от формата документа обогащенного текста как Word, OOWriter или даже окно браузера.
Так как Вы находитесь на Mac, у Вас по всей вероятности есть реализация FreeBSD sed
, в этом случае необходимо записать команде этот путь:
find . -name "*.java" -exec sed -i '' s/foo/bar/g {} +
(сюда использование +
вместо \;
постараться не выполнять тот sed
вызов на файл).
В реализации FreeBSD sed
-i
флагу нужен аргумент: расширение файла резервной копии. Например, с -i .bak
команда скопировала бы file1.txt
как file1.txt.bak
сначала прежде, чем выполнить замену в исходном файле. Используя пустой аргумент ''
средства не использовать файл резервной копии, который, кажется, то, что Вы хотите.
То же самое в GNU (или NetBSD, OpenBSD, busybox) реализация было бы:
find . -name "*.java" -exec sed -i s/foo/bar/g {} +
Спасибо @bahamat и @Mikel и @pieter-breed для улучшения моего ответа с Вашими комментариями.