Se você confia no ponto de vista de git
sobre o que é um arquivo binário ou não, você pode usar git grep
para obter uma lista de arquivos não binários. Assumindo que t.cpp
é um arquivo de texto, e ls
é um binário, ambos checados em:
$ ls
t.cpp ls
$ git grep -I --name-only -e ''
t.cpp
A opção -I
significa:
-I
Don't match the pattern in binary files.
Para combinar isso com sua expressão sed
:
$ git grep -I --name-only -z -e '' | \
xargs -0 sed -i.bk -e 's/[ \t]\+\(\r\?\)$//;$a\'
( -z
/ xargs -0
para ajudar com nomes estranhos de arquivos.)
Confira a página git grep
man para outras opções úteis - --no-index
ou --cached
pode ajudar dependendo de exatamente qual conjunto de arquivos você deseja operar.