Ein bisschen altmodisch, aber das hat unter OS X funktioniert.
Es gibt nur wenige Tricks:
• Bearbeitet nur Dateien mit der Erweiterung .sls
im aktuellen Verzeichnis
• .
muss maskiert werden, um sicherzustellen, dass sed
sie nicht als "irgendein Zeichen" bewertet werden.
• ,
wird sed
anstelle des üblichen als Trennzeichen verwendet/
Beachten Sie auch, dass Sie eine Jinja-Vorlage bearbeiten müssen, um eine variable
im Pfad einer zu übergeben import
(dies ist jedoch kein Thema).
Überprüfen Sie zunächst, ob Ihr Befehl sed das tut, was Sie möchten (dies druckt nur die Änderungen an stdout, die Dateien werden nicht geändert):
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
Bearbeiten Sie den Befehl sed nach Bedarf, sobald Sie bereit sind, Änderungen vorzunehmen:
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed -i '' 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
Beachten Sie , dass ich -i ''
im Befehl sed keine Sicherungskopie der Originaldateien erstellen wollte (wie in In-Place-Änderungen mit sed unter OS X oder in Robert Lujos Kommentar auf dieser Seite erläutert ).
Viel Spaß beim Säen!