Unix HP-UX ksh рекурсивный поиск и замена
Я пытаюсь сделать рекурсивный поиск и замену в HP-UX и что-то упустил.
Что имею на данный момент:
find . -name "*.java" | xargs sed 's/foo/bar/g'
Я знаю, проблема в том, что он не заменяет встроенный файл. Я полагаю, что на других ОС есть флаг -i, но, похоже, в моей версии HP-UX его нет.
Какие-либо предложения?
2 ответа
Вы всегда можете использовать ed
find . -name "*.java" | while IFS= read -r file; do
ed "$file" <<ED_COMMANDS
%s/foo/bar/g
w
q
ED_COMMANDS
done
Вы могли бы обойти пропавшего без вести -i
как это (не проверено):
for i in `find . -name "*.java"`; do cp $i /tmp/$$; sed 's/foo/bar/g' < /tmp/$$ > $i;done