Немного старой школы, но это работало на OS X.
Есть несколько хитростей:
• Будет редактировать только файлы с расширением .sls
в текущем каталоге
• .
должен быть экранирован, чтобы гарантировать, что sed
он не оценивается как «любой персонаж»
• ,
используется в качестве sed
разделителя вместо обычного/
Также обратите внимание, что это нужно отредактировать шаблон Jinja для передачи variable
по пути import
(но это не по теме).
Во-первых, убедитесь, что ваша команда sed делает то, что вы хотите (это только напечатает изменения в stdout, но не изменит файлы):
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
При необходимости измените команду sed, как только вы будете готовы внести изменения:
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed -i '' 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
Обратите внимание на -i ''
команду sed , я не хотел создавать резервную копию исходных файлов (как объяснено в Редактировании на месте с помощью sed в OS X или в комментарии Роберта Лужо на этой странице).
С днем рождения!