命令行小技巧──如何批量查找替换文本

有很多情况我们希望能一次性修改多个文件中的某个字符串。比如最近七牛的测试域名回收了,我把图床换到了腾讯云,需要把所有博客文章中的图片链接改成新的。一个命令搞定。

1
$ sed -i s/OLDURL/NEWURL/g `grep -rl OLDURL DIR/*`

通过 grep 递归查找目录下的所有文件,并把含有某字符串的文件都列出来,然后把这些文件名作为 sed 的参数。sed 默认是把修改结果打印到标准输出,用 -i 让它直接修改文件。