本文共 750 字,大约阅读时间需要 2 分钟。
最近有需求,需要在编译好的前端文件里,查找替换特定字段。
通常都会想到用 find 找出文件再使用管道输出给 sed。但实际验证下来,包括去 StackOverFlow 上查找,解决方案都不理想。
主要的痛点是:find 对需要忽略的目录路径,处理很麻烦,效果还差异很大。例如这里说的
折腾了大半天,勉强能用,我们有多个前端项目,要做这个适配很痛苦。
晚上在家灵光一闪:tree 这个命令,可以列出目录下所有文件和目录,何不试试?
周六溜回公司,试验了一把,完美。以下是最终的 ansible 代码部分。
- name: Find and replace specified strings shell: | tree --noreport --prune -iFf \ -I 'node_modules|jspm_packages' \ -P '*.css|*.js|*.html|*.htm' \ build/{ { region_name }}/{ { prj_name }}/{ { prj_output_dir | default('target') }} \ | grep -Ev '/$' \ | tail -n +2 \ | xargs -n1 sed -i -e 's/{ { item.s1 }}/{ { item.s2 }}/g' with_items: - s1: "work.aaa.com" s2: "{ { region_name }}-work.{ { region_domain }}"
用到的命令参数就不一一解释了。执行效率非常高。
转载地址:http://sjxbo.baihongyu.com/