Você deve escapar do asterisco, não da chave. Seu comando deve ficar assim:
grep -r --exclude=\*.{html,htm,js} "li" *
Eu acho uma extensão de exclusão única como
grep --exclude "*.js" "a" *
Como escrevo várias máscaras de exclusão?
Eu tentei o código abaixo, mas não funciona:
grep -r --exclude=*.\{html,htm,js} "li" *
grep -R -E '(\.js|rb)' "create" *
homem grep * scroll de rolagem *
--exclude=GLOB
Skip files whose base name matches GLOB (using wildcard matching).
A file-name glob can use *, ?, and [...] as wildcards, and \ to
quote a wildcard or backslash character literally.
Procure "concha globbing" para mais informações
Exemplo:
$ grep -r --exclude=\*.{png,jpg} a .
./moo.txt:a
./moo.htm:a
./hai:a
$ ls
hai hai.png moo.htm moo.txt