share-image
ESC

批量修改目录内所有文件内容

有时候,我们希望把有些文件的特定内容替换成其他的,假如一个一个替换效率太低了,这个时候,我们可以借助强大的grep和sed 完成。

比如我有一些文件,我希望把其中的file.awen.me 这个url 替换成file.fangwenjun.com,首先,我们需要查找当前目录中包含这个域名的文件:

egrep -rn 'file\.awen\.me' *.md

如图所示

linux 修改

然后使用sed 替换

sed -i "s@file\.awen\.me@file\.fangwenjun\.com@g" `grep file\.awen\.me -rl ./`

最后我们验证下

ubuntu@ubuntu-xenial:/vagrant/_posts$ sed -i "s@file\.awen\.me@file\.fangwenjun\.com@g" `grep file\.awen\.me -rl ./`
ubuntu@ubuntu-xenial:/vagrant/_posts$ egrep -rn 'file\.awen\.me' *.md

发现使用file.awen.me 已经查找不到了,而使用file.fangwenjun.com 可以查到。

ubuntu@ubuntu-xenial:/vagrant/_posts$ egrep -rn 'file\.fangwenjun\.com' *.md
Ansible使用.md:178:![](https://file.fangwenjun.com/blog/2017-07-02-084417.jpg!awen)
Ansible使用.md:184:![](https://file.fangwenjun.com/blog/2017-07-02-084443.jpg!awen)
Ansible使用.md:188:![](https://file.fangwenjun.com/blog/2017-07-02-084502.jpg!awen)
ansible-学习笔记.md:215:![](https://file.fangwenjun.com/blog/2017-07-05-021104.jpg!awen)
ansible-学习笔记.md:366:![](https://file.fangwenjun.com/blog/2017-07-05-024050.jpg!awen)
Apache-服务.md:27:![](https://file.fangwenjun.com/2017-06-14-073228.jpg!awen)

mac 系统

mac 下 sed 替换 需要指定一个备份文件才可以。

sed -i "_bak" "s@tags: 心情@tags: 随笔@g" `grep 'tags: 心情' -rl ./`
文章作者:阿文
文章链接: https://www.awen.me/post/29904.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客
本文于 2017-11-16 发布,已超过半年(2995天),请注意甄别内容是否已过期。