Git sed игнорировать двоичные файлы

Подобно этому пользователю У меня возникла проблема при запуске 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 для всех файлов, которые он может запустить, и просто игнорировать двоичные файлы?


55
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.