类似于 此用户 当某些跟踪的文件是二进制文件时,我在存储库中的所有文件上运行
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 ls-files
替换为 git grep -lI .
。实际上,如果您使用 git grep -lI 'here' | ...
可能会更好,这样您只在包含与 sed 命令中使用的正则表达式匹配的字符串的文件上运行 sed
,即:
git grep -lI 'here' | xargs sed -i '' 's/here/there/g'