MAC#批量文件内容替换
场景
目录下部分文件内容需要进行批量替换,需要做的工作有查询过滤包含替换原字符串的文件,对这些文件中的内容进行替换。涉及到的命令有grep、xargs、sed。
处理示例
1.替换客户端
grep -I -l -r -e 'itms-services://?action=download-manifest&url=https://dn-app.myapp.me/myapp.plist' /opt/web/myapp/* |xargs sed -i "s/itms-services:\/\/?action=download-manifest&url=https:\/\/www.noname.com\/myapp.plist/https:\/\/itunes.apple.com\/cn\/app\/myapp\/id78910?mt=8/g"
2.替换商家端
grep -I -l -r -e 'itms-services://?action=download-manifest&url=https://dn-app.myapp.me/myapp_control.plist' /opt/web/myapp/* | xargs sed -i "s/itms-services:\/\/?action=download-manifest&url=https:\/\/www.noname.com\/myapp_control.plist/https:\/\/itunes.apple.com\/cn\/app\/myapp_control\/id939031?mt=8/g"
命令解释
上述命令可以分拆为两个命令分别是查找和替换
1.使用grep查找到需要替换内容的文件
1.1.grep -i -I -r'item-service://?[^"]+"' /opt/web/
1.2.查询/opt/web/目录下文件内容包含item-service相关的文件,不区分大小写、只输出匹配的文件全路径,搜索子目录
2.对每个文件使用sed命令进行替换
2.1. sed-i "s/item-service/http-service/g"
3.xargs命令
3.1.xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs捕获一个命令的输出,然后传递给另一个命令。
资料
1.Dash