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 .slstrong thư mục hiện tại
• .phải được thoát để đảm bảo sedkhông đánh giá chúng là "bất kỳ nhân vật nào"
• ,được sử dụng làm seddấ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 variabletrong đườ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!