You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bash命令行批量修改多个文件中的字符串?

Bash批量替换多文本文件中的指定字符串

基础批量替换(当前目录)

如果要替换当前目录下所有.txt文件里的old_str为new_str,直接用sed命令:

  • Linux(GNU sed):
    sed -i 's/old_str/new_str/g' *.txt
    
  • macOS(BSD sed),需要指定备份后缀(避免直接覆盖原文件):
    sed -i.bak 's/old_str/new_str/g' *.txt
    
    替换完成后可以删除备份文件:
    rm *.txt.bak
    
    说明:g表示全局替换每行中所有匹配的字符串,不加g只会替换每行第一个匹配项。

递归替换子目录中的文件

如果需要处理当前目录及所有子目录里的目标文件,用find配合sed:

  • Linux:
    find . -type f -name "*.txt" -exec sed -i 's/old_str/new_str/g' {} +
    
  • macOS:
    find . -type f -name "*.txt" -exec sed -i.bak 's/old_str/new_str/g' {} +
    
    删除备份文件:
    find . -name "*.txt.bak" -delete
    

特殊场景处理

  • 含特殊字符的字符串:如果要替换的字符串包含/、&这类特殊符号,可以换用其他分隔符(比如#),避免转义麻烦:
    sed -i 's#old/str#new&str#g' *.txt
    
  • 忽略大小写替换:添加I选项实现不区分大小写的替换:
    sed -i 's/old_str/new_str/gI' *.txt
    
  • 测试替换效果:不想直接修改文件的话,去掉-i选项,将替换结果输出到终端预览:
    sed 's/old_str/new_str/g' test.txt
    

内容的提问来源于stack exchange,提问作者oml

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:57:04