代码之家  ›  专栏  ›  技术社区  ›  minseong

Git sed忽略二进制文件

  •  1
  • minseong  · 技术社区  · 1 年前

    类似 this user 我跑步有问题 sed 当一些被跟踪的文件是二进制文件时,覆盖存储库中的所有文件。

    两者都没有 git ls-files 也没有来自这个问题的一些git grep解决方案,比如 git grep --full-name -l '.' 忽略二进制文件,将其传递给sed

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

    导致错误“sed:RE错误:非法字节序列”。

    我如何在所有可以运行sed的文件上运行sed,而忽略二进制文件?

    1 回复  |  直到 1 年前
        1
  •  1
  •   minseong    1 年前

    更换 git ls-files 具有 git grep -lI . 事实上,如果你用它可能会更好 git grep -lI 'here' | ... 所以你只跑 sed 对于包含与sed命令中使用的正则表达式匹配的字符串的文件,即:

    git grep -lI 'here' | xargs sed -i '' 's/here/there/g'
    
    -I
    Don’t match the pattern in binary files.
    
    推荐文章