首页/系统/Linux 运维命令速查/场景:多文件批量替换文本
本包目录(613 条)
文件与目录76 条
文本处理77 条
网络命令82 条进程与作业69 条磁盘与文件系统51 条用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条性能与监控48 条定时任务与计划50 条

场景:多文件批量替换文本

站点改域名、批量改配置的经典组合:grep -rl 先列出命中文件 → sed -i.bak 替换留档 → 再 grep 复核;范围永远先小后大。

Linux 运维命令速查系统更新于 2026-10-12
场景跨多文件的字符串替换
组合grep -rl + xargs + sed -i

建议流程

建议流程
grep -rl 'old_domain.com' /www/wwwroot/site --include='*.html' | tee /tmp/hit.txt
grep -c 'old_domain.com' $(cat /tmp/hit.txt) | head    # 先看每文件命中次数
xargs -a /tmp/hit.txt sed -i.bak 's/old_domain\.com/new_domain.com/g'
grep -rl 'old_domain.com' /www/wwwroot/site --include='*.html' | wc -l   # 复核
sed -i.bak 会为每个文件留 .bak:替换确认无误后再统一清理(find ... -name '*.bak' -delete 前先列清单)。

易错点

  • 替换串里的正则元字符要转义(域名里的 . 写成 \\.),否则会误替换 wider 匹配
  • 文件列表含空格/特殊字符时管道要 xargs -0 + grep -rlZ,普通 xargs 会把路径拆断

数据来源与参考

  • man 1 sed(GNU sed 手册)
  • man 1 grep(GNU grep 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌