Một trường học hơi cũ nhưng điều này đã làm việc trên OS X.
Có một vài mánh khóe:
• Sẽ chỉ chỉnh sửa các tệp có phần mở rộng .sls
trong thư mục hiện tại
• .
phải được thoát để đảm bảo sed
không đánh giá chúng là "bất kỳ nhân vật nào"
• ,
được sử dụng làm sed
dấu phân cách thay vì thông thường/
Cũng lưu ý điều này là để chỉnh sửa mẫu Jinja để vượt qua variable
trong đường dẫn của một import
(nhưng đây không phải là chủ đề).
Đầu tiên, xác minh lệnh sed của bạn làm những gì bạn muốn (điều này sẽ chỉ in các thay đổi thành thiết bị xuất chuẩn, nó sẽ không thay đổi các tệp):
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
Chỉnh sửa lệnh sed khi cần thiết, khi bạn đã sẵn sàng thực hiện thay đổi:
for file in $(find . -name *.sls -type f); do echo -e "\n$file: "; sed -i '' 's,foo\.bar,foo/bar/\"+baz+\"/,g' $file; done
Lưu ý -i ''
trong sed lệnh , tôi không muốn tạo bản sao lưu của các tệp gốc (như được giải thích trong các chỉnh sửa tại chỗ với sed trên OS X hoặc trong nhận xét của Robert Lujo trong trang này).
Chúc mọi người an ủi!