Biraz eski okul ama bu OS X üzerinde çalıştı.
Birkaç hile var:
• Yalnızca .sls
geçerli dizinin altındaki uzantıya sahip dosyaları düzenler
• "herhangi bir karakter" olarak değerlendirilmediğinden .
emin olmak için kaçmalıdırsed
• normal yerine ayırıcı ,
olarak kullanılırsed
/
Ayrıca bunun bir Jinja şablonunu bir variable
yoldan geçmek için düzenlemek olduğuna dikkat edin import
(ancak bu konu dışıdır).
İlk olarak, sed komutunuzun istediğinizi yaptığını doğrulayın (bu yalnızca stdout'taki değişiklikleri yazdırır, dosyaları değiştirmez):
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
Değişiklik yapmaya hazır olduğunuzda sed komutunu gerektiği gibi düzenleyin:
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed -i '' 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
Not -i ''
içinde sed I (açıklandığı şekilde orijinal dosyaların yedeğini oluşturmak istemedim, komuta OS X üzerinde sed ile In-yer düzenlemeleri bu sayfadaki veya Robert Lujo en yorumunda).
Mutlu acılar millet!