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