Cor diferente para o intervalo KiB em 'ls -l'

8

Existe alguma maneira sensata de destacar as colunas 4ª, 5ª e 6ª à direita do tamanho do arquivo em ls -l ? Minha intenção é facilitar a leitura de um tamanho de arquivo em bytes, KiBs ou MiBs. Eu sei sobre o -h flag, mas acho que ter que interpretar as letras no final é mais complicado do que apenas olhar e ver o comprimento do número (magnitude). Esta é a mesma razão pela qual carros de corrida usam mostradores analógicos em vez de digitais.

Meu shell de destino é o Bash. Obrigado.

EDIT: Eu estou olhando para destacar os milhares, dez mil e cem mil lugares da coluna de tamanho. Assim: 123 456 789

    
por dotancohen 29.11.2012 / 14:24

2 respostas

7

Talvez algo como:

ls -l | perl -pe 'BEGIN{@color=(0,2,3,1,5,4)}
  s{((?:\S+\s+){4})(\d+)}{"$1\e[3" . 
  $color[log($2||1)/log(2)/10] . "m$2\e[m"}e'

Para preto (ou qualquer que seja a cor de primeiro plano padrão no seu terminal) para tamanhos de 0 a 1023, verde de 1k a 1M, amarelo de 1M a 1G, depois vermelho, roxo, azul.

Editar . Com base nos seus requisitos editados:

ls -l | perl -pe 's{^((?:\S+\s+){4}\d*)(\d{3})(?=\d{3})}
                   {$1\e[31;1m$2\e[m}'
    
por 29.11.2012 / 15:16
3

A maneira mais fácil de instalar qualquer software adicional é grep --color do que você quiser. Para destacar o tamanho do arquivo da saída ls, você deve rodar algo assim (às vezes ele irá destacar não apenas o tamanho):

ls -l | grep --color '\s\+[0-9]\+\s'

Por outro lado, consulte a pergunta semelhante em SO.

    
por 29.11.2012 / 15:10

Tags