Com base na resposta anterior, você pode usar o comando "file" para identificar arquivos de texto e limitar seu grep a apenas esses arquivos. Por exemplo:
find dir -type f -print |
xargs file |
grep text |
cut -f1 -d: |
xargs grep "expression"
Isso é:
- Encontrar todos os arquivos no diretório "dir"
- Passe esses argumentos como "file"
- Procure a saída de "arquivo" que contém a palavra "texto"
- Retire o primeiro campo delimitado por dois pontos e use-o como um nome de arquivo
- Pesquise esses arquivos usando grep.
Isso falhará no caso de nomes de arquivos contendo espaços em branco ou dois-pontos, mas fará o que você quiser.