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

咨询:通过PuTTY执行SSH批量替换文件夹文件中字符串的正确命令

在PuTTY中通过SSH批量替换文件夹内所有文件的指定文本

这需求用Linux下的find+sed组合就能轻松搞定,分几种场景给你具体命令:

1. 替换目标文件夹下所有文件的指定文本

假设你的目标文件夹路径是/var/www/your-site,要把所有文件里的John全局替换成Bill,直接运行这条命令:

find /var/www/your-site -type f -exec sed -i 's/John/Bill/g' {} +

命令拆解:

  • find /var/www/your-site:指定要遍历的根文件夹
  • -type f:只处理普通文件,跳过目录和特殊文件
  • -exec sed -i 's/John/Bill/g' {} +:对找到的每个文件执行sed替换操作
    • -i:直接原地修改文件(不用输出到新文件再替换)
    • s/John/Bill/g:正则替换规则,g表示全局替换(每行所有匹配的John都会被换掉,不加g只换每行第一个)

2. 只替换特定扩展名的文件

如果只想替换.php和.html这类特定格式的文件,加个文件名过滤即可:

find /var/www/your-site -type f \( -name "*.php" -o -name "*.html" \) -exec sed -i 's/John/Bill/g' {} +

注意这里的\( ... \)是把多个文件名条件组合起来,避免shell解析出错。

重要注意事项

  • 先测试再执行:如果不确定替换效果,可以先拿单个文件测试,比如sed 's/John/Bill/g' test-file.php,会输出替换后的内容,不会修改原文件
  • 备份文件(可选但推荐):怕误操作的话,可以让sed自动生成备份文件,命令改成:
    find /var/www/your-site -type f -exec sed -i.bak 's/John/Bill/g' {} +
    
    替换完成后,所有原文件会生成.bak后缀的备份,确认没问题后可以批量删除备份:
    find /var/www/your-site -name "*.bak" -delete
    
  • BSD/MacOS兼容提示:如果你的服务器是BSD系统或者MacOS,sed -i需要加一个空后缀,比如sed -i '' 's/John/Bill/g',不过用PuTTY连的大多是Linux服务器,这条可以忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:55:31