Обычно я делаю что-то вроде этого:
find . -name '*.hpp' -o -name '*.cpp' | xargs grep -l StuffToEdit
Затем я вижу, получаю ли я интересующие файлы.Если это так, я добавляю в конвейер:
| xargs sed -i 's@StuffToEdit@NewStuffInstead@g'
И позвольте мне разорвать.
Если sed заставляет вашу VCS думать, что файлы изменились, а они нет, вы должны посмотретьна диффах.Возможно, у вас в пробелах отключены пробелы, но это то, что меняется (окончания строк и т. П.)?
Я уверен, что кто-то придет и укажет, что одно или оба моих использования xargs там ненеобходимо, но для разовых работ это не имеет значения.В любом случае, я предпочитаю эти многопрограммные конвейеры для такого рода задач, поскольку я могу легко отключить или заменить определенные фильтры и проверить результаты остальных, если результаты сначала не верны.