Git sed 忽略二进制文件

问题描述 投票:0回答:1

类似于 此用户 当某些跟踪的文件是二进制文件时,我在存储库中的所有文件上运行

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,而忽略二进制文件?

git shell sed terminal zsh
1个回答
1
投票

git ls-files
替换为
git grep -lI .
。实际上,如果您使用
git grep -lI 'here' | ...
可能会更好,这样您只在包含与 sed 命令中使用的正则表达式匹配的字符串的文件上运行
sed
,即:

git grep -lI 'here' | xargs sed -i '' 's/here/there/g'
© www.soinside.com 2019 - 2024. All rights reserved.