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

如何在Git仓库中用sed处理文件时忽略二进制文件以避免报错?

解决Git仓库中sed跳过二进制文件的问题

方法1:借助git grep筛选文本文件

Git自带识别二进制文件的能力,用git grep加上--text参数就能只处理文本文件,自动跳过二进制文件。执行以下命令即可:

git grep --full-name --text -l '.' | xargs sed -i '' 's/here/there/g'

参数说明:

  • --text:强制Git只处理文本文件,忽略二进制文件
  • -l:仅输出匹配到的文件名(这里用.匹配所有内容,所以会列出所有文本文件)

方法2:用file命令判断文件类型

如果你的系统有file命令,可以先判断文件是否为文本类型,再执行sed:

git ls-files | while read file; do
  if file "$file" | grep -q text; then
    sed -i '' 's/here/there/g' "$file"
  fi
done

原理是file命令会识别文件的类型,通过grep -q text判断是否为文本文件,符合条件才执行sed修改。

方法3:临时调整字符编码(应急用)

如果只是因为二进制文件的非法字节序列导致报错,可以临时设置LC_ALL=C让sed忽略编码问题,但这个方法只是绕过错误,不会跳过二进制文件,可能误改内容,不推荐常用:

LC_ALL=C git ls-files | xargs sed -i '' 's/here/there/g'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:23:12