Eu passaria isso por um segundo greppara removê-los:
grep -r --exclude={\*~,\*.map} "OK" bar/ | grep -vP '(?<!debug)\.js'
O -vinverte o jogo, imprimindo linhas que não correspondem ao padrão e -Ppermite Perl Compatible Regular Expressions que nos permitem usar visões traseiras negativos . Esse regex em particular corresponderá ao .jsque não é precedido por debugquais meios (desde que estamos invertendo as correspondências) que somente esses .jsarquivos serão impressos.
No entanto, como o @QuestionOverflow apontou nos comentários, isso pode ter o efeito colateral não intencional de filtrar as linhas que contêm OKe, jsuma vez que grep -vé aplicada a toda a saída, não apenas ao nome do arquivo. Para evitar isso, basta adicionar dois pontos (que é o que é grepusado para separar nomes de arquivos do conteúdo):
grep -r --exclude={*~,*.map} "OK" bar/ | grep -vP '(?<!debug).js:'
Isso ainda falhará se sua linha de entrada contiver foo.js:ou se o nome do arquivo contiver :. Portanto, para ter certeza, use uma abordagem diferente:
grep -Tr --exclude={*~,*.map} "OK" bar/ | grep -vP '(?<!debug).js\t'
As -Tcausas greppara imprimir uma guia entre o nome do arquivo e o conteúdo do arquivo. Portanto, se simplesmente adicionarmos um \tno final da regex, ela corresponderá apenas aos nomes dos arquivos, e não ao conteúdo da linha.
Ainda assim, o usofind pode fazer mais sentido, independentemente.
OKe.jsna mesma linha?