Cor diferente para a faixa KiB em `ls -l`

9

Existe alguma maneira sensata de destacar as colunas 4, 5 e 6 à direita do tamanho do arquivo ls -l? Minha intenção é facilitar a leitura do tamanho de um arquivo, seja em bytes, KiBs ou MiBs. Eu sei sobre a -hbandeira, 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 os carros de corrida usam mostradores analógicos em vez de digitais.

Meu shell de destino é o Bash. Obrigado.

Edição: Eu estou olhando para destacar os milhares, dez mil e cem mil lugares da coluna tamanho. Assim: 123 456 789

dotancohen
fonte
Talvez isso possa ajudá-lo: unix.stackexchange.com/a/49270/14084
Bernhard
Obrigado, Bernhard! Eu uso sua solução para essa pergunta todos os dias, tenho uma lslalias para ela com algumas pequenas alterações. De fato, a resposta a esta pergunta será combinada com a sua técnica no meu lslapelido.
dotancohen
@dotancohen Ah, não sabia que era o mesmo cara que faz a pergunta, mas eu estava realmente se referindo a esta ls resposta ++ aqui :)
Bernhard
Eu vejo. Infelizmente, o ls ++ não resolve esse problema.
dotancohen
@Bernhard: Ele ainda precisa de alguns ajustes, mas dê uma olhada:grep --color -E -- "$(ls -rtl $@ | tail -n4)|$" <(ls -l $@ | perl -pe 's{^((?:\S+\s+){4}\d*)(\d{3})(?=\d{3})}{$1\e[31;1m$2\e[m}')
dotancohen

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 e depois vermelho, roxo e azul.

Edit . 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}'
Stéphane Chazelas
fonte
Legal! Eu presumo que alguém gostaria de ter um apelido para isso? :)
posdef 29/11
Obrigado. Não é o que estou procurando (vou esclarecer a questão), mas certamente é útil e eu apenas aprendi um monte de perl com isso!
dotancohen
Muito agradável! E obrigado por me ensinar alguns perl!
dotancohen 29/11
3

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

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

Por outro lado, consulte a pergunta semelhante no SO.

pressa
fonte
Obrigado. De fato, destacar o número não é o que estou procurando. Eu esclareci a pergunta. De qualquer forma, +1 devido a me ensinar algo novo!
dotancohen