Um pouco da velha escola, mas isso funcionou no OS X.
Existem alguns truques:
• Editará apenas arquivos com extensão .sls
no diretório atual
• .
deve ser escapado para garantir sed
que não os avalie como "qualquer caractere"
• ,
é usado como sed
delimitador em vez do usual/
Observe também que isso é para editar um modelo Jinja para passar um variable
no caminho de um import
(mas isso não é tópico).
Primeiro, verifique se o seu comando sed faz o que você deseja (isso imprimirá apenas as alterações no stdout, não os arquivos):
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
Edite o comando sed conforme necessário, quando estiver pronto para fazer alterações:
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed -i '' 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
Observe o comando -i ''
in sed , eu não queria criar um backup dos arquivos originais (como explicado em Edições no local com sed no OS X ou no comentário de Robert Lujo nesta página).
Gente sedutora feliz!