先看下需求,是将某文件夹及其子文件夹下所有文件中含有aaa的字符串替换成bbb。
参考链接:Shell:sed: RE error: illegal byte sequence_运维_懒懒的小猴子的专栏-CSDN博客
mac下如何使用Sed批量替换文件夹下的字符串 - Vultr - SegmentFault 思否
总结出正确使用姿势,如下:
cd 到 需要替换字符串的文件的文件夹
执行以下命令(作用:将“aaa”替换成“bbb”)
grep -rl 'aaa' ./ | xargs sed -i "" "s/aaa/bbb/g"
如果报sed: RE error: illegal byte sequence的错误
那么执行export LC_COLLATE='C'
以及export LC_CTYPE='C'
再执行grep -rl 'aaa' ./ | xargs sed -i "" "s/aaa/bbb/g"
注意:如果字符串中含有转义字符需要前面加 \
然后坐等结果,4400+个文件,大概1分钟就全部替换完了。