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