Isso porque grep examina o conteúdo do arquivo.
find . -exec sh -c "file -b --mime-type {} | grep -q '^text/'" \; -print
Existe uma maneira de especificar para find que eu quero apenas arquivos de texto (e não arquivos binários)? Grep tem uma opção para excluir arquivos binários, então achei que find provavelmente tem um recurso semelhante, mas não consegui encontrá-lo.
find pode localizar arquivos por seus metadados, mas não confere o conteúdo. No entanto, você pode acoplá-lo com file :
find .git -type f -exec file -iN0 {} + |
awk -F 'find .git -type f -exec file -iN0 {} + |
awk -F '%pre%' '$2 ~ /^: text\// {print $1}'
' '$2 ~ /^: text\// {print $1}'
(Você pode remover a parte | awk ... se também quiser informações mais detalhadas.)
Tags command-line find linux shell unix