Трохи стара школа, але це працювало на ОС 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 , я не хотів створювати резервну копію вихідних файлів (як пояснено в In-place edits with sed на OS X або в коментарі Роберта Луйо на цій сторінці).
Щасливі люди, що сидять!