Como obtenho a cor grep nos nomes dos arquivos antes de cada partida?

5

Se eu executar grep -ir "somethingtomatch" . do diretório atual, normalmente obtenho resultados como este:

./some/path/file1.html: filecontent filecontent keyword filecontent
./some/path/file2.html: filecontent filecontent filecontent keyword
./some/path/file3.html: filecontent keyword filecontent filecontent
./some/path/file4.html: keyword filecontent filecontent filecontent

Eu usei grep --color=auto -ir 'somethingtomatch" . , mas apenas destaca as palavras-chave em branco em um destaque em vermelho. Eu estou tentando obter nomes de arquivos no código de cores da esquerda também. Como eu faço isso?

Estou usando o Terminal.app no OS X com bash e xterm (e também testei o xterm-color).

    
por chimerical 16.03.2011 / 22:05

3 respostas

6

Você pode alterar as cores com a variável de ambiente $ GREP_COLORS. No seu caso, você poderia tentar export GREP_COLORS='fn=1;32' para mudar a cor do nome do arquivo para verde.

    
por 16.03.2011 / 22:32
1

Você pode usar o ack, que permite definir variáveis de ambiente para o nome do arquivo, o número da linha e a própria correspondência.

link

    
por 17.03.2011 / 16:44
0

Você teria que pós-processar a saída. Algo como isso pode funcionar:

$ grep --color -ir 'pattern' files | perl -pe 's/^([^:]+):/chomp(my $f = 'ls --color \Q$1'); $f/e'

(Eu estou assumindo que você está exibindo a saída de um sistema Linux, já que o OSX ls não colore os arquivos de maneira útil para isso.)

(NB: a distinção entre esta resposta e a $GREP_COLORS é que a última usa uma cor fixa, enquanto as minhas consultam ls --color .)

    
por 16.03.2011 / 22:33