Linux 批量查找并替换文件夹下所有文件的内容

本文最后更新于:2022年7月4日 上午

Linux 命令 sedgrep 命令结合可以对文件夹下的所有特定字符串进行快速替换,本文记录方法。

具体操作

批量查找某个目下文件的包含的内容

1
2
cd etc
grep -rn "查找的内容" ./
  • 例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 grep -rn "cdn.jsdelivr.net/gh/zywvvd/HexoImages" ./

->
$ grep -rn "cdn.jsdelivr.net/gh/zywvvd/HexoImages" ./
./notes/coding/dataset/mongodb/MongoDB.md:120:![](http://101.43.39.125/6111/image_canglan/20210210172541.png)
./notes/coding/doc/design_document/design_document.md:80:![](http://101.43.39.125/6111/win11-mt/20210922111023.png)
./notes/coding/doc/design_document/design_document.md:82:![](http://101.43.39.125/6111/win11-mt/20210922111144.png)
./notes/coding/doc/design_document/design_document.md:88:![](http://101.43.39.125/6111/win11-mt/20210922111356.png)
./notes/coding/halcon/halcon-20-11-install/halcon-20-11-install.md:59:![](http://101.43.39.125/6111/vvd-dell-2021-win-10/20210726140732.png)
./notes/coding/halcon/halcon-20-11-install/halcon-20-11-install.md:61:![](http://101.43.39.125/6111/win11-mt/20210727093358.png)
./notes/coding/halcon/halcon-20-11-install/halcon-20-11-install.md:63:![](http://101.43.39.125/6111/vvd-dell-2021-win-10/20210726141414.png)
./notes/coding/halcon/halcon-20-11-install/halcon-20-11-install.md:65:![](http://101.43.39.125/6111/vvd-dell-2021-win-10/20210726141623.png)
./notes/coding/halcon/halcon-20-11-install/halcon-20-11-install.md:71:![](http://101.43.39.125/6111/vvd-dell-2021-win-10/20210726162809.png)
./notes/coding/halcon/halcon-20-11-install/halcon-20-11-install.md:73:![](http://101.43.39.125/6111/vvd-dell-2021-win-10/20210726150048.png)
./notes/coding/halcon/halcon-20-11-install/halcon-20-11-install.md:79:![](http://101.43.39.125/6111/vvd-dell-2021-win-10/20210726163922.png)
./notes/coding/halcon/halcon-20-11-install/halcon-20-11-install.md:108:![](http://101.43.39.125/6111/vvd-dell-2021-win-10/20210726191912.png)
./notes/coding/internet/ddns/ddns.md:23:![](http://101.43.39.125/6111/files/20211230205645.png)
...

批量替换某个目下所有包含的文件的内容

1
2
cd etc
sed -i "s/查找的内容/替换后的内容/g" `grep -rl "查找的内容" ./`
  • 例如当前我需要将当前文件夹下所有子目录的所有子文件中的 cdn.jsdelivr.net/gh/zywvvd/HexoImages 字符串替换为 cdn.jsdelivr.net/gh/zywvvd/HexoFiles

    字符 / 需要用 \ 字符进行转义

1
sed -i "s/cdn.jsdelivr.net\/gh\/zywvvd\/HexoImages/gitee.com\/zywvvd\/HexoImages\/raw\/main/g" `grep -rl "cdn.jsdelivr.net\/gh\/zywvvd\/HexoImages" ./`

批量查找并替换任意文件夹下的文件内容。

1
sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" /任意文件夹`

参考资料


Linux 批量查找并替换文件夹下所有文件的内容
https://www.zywvvd.com/notes/system/linux/cont-from-dir/cont-from-dir/
作者
Yiwei Zhang
发布于
2022年2月11日
许可协议