Color diferente para la gama KiB en `ls -l`

9

¿Hay alguna forma sensata de resaltar las columnas 4ta, 5ta y 6ta desde la derecha del tamaño del archivo ls -l? Mi intención es facilitar la lectura del tamaño de un archivo, ya sea en bytes, KiB o MiB. Sí sé sobre la -hbandera, pero encuentro que tener que interpretar las letras al final es más engorroso que solo mirar y ver la longitud del número (magnitud). Esta es la misma razón por la cual los autos de carrera usan diales analógicos en lugar de digitales.

Mi caparazón objetivo es Bash. Gracias.

EDITAR: Estoy buscando resaltar los miles, diez mil y cien mil lugares de la columna de tamaño. Así: 123456 789

dotancohen
fuente
Tal vez esto pueda ayudarte: unix.stackexchange.com/a/49270/14084
Bernhard el
Gracias Bernhard! Utilizo su solución a esa pregunta todos los días, la he lslalias con algunos cambios menores. De hecho, la respuesta a esta pregunta se combinará con su técnica allí en mi lslalias.
dotancohen
@dotancohen Ah, no me di cuenta de que era el mismo tipo que hacía la pregunta, pero en realidad me refería a esta respuesta de ls ++ aquí :)
Bernhard
Veo. Desafortunadamente, ls ++ no soluciona este problema.
dotancohen
@Bernhard: Todavía necesita algunos ajustes, pero eche un vistazo: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

Respuestas:

7

Tal vez 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 el negro (o cualquiera que sea el color de primer plano predeterminado en su terminal) para tamaños de 0 a 1023, verde de 1k a 1M, amarillo de 1M a 1G, luego rojo, púrpura, azul.

Editar . Según sus 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
fuente
¡Frio! ¿Supongo que uno querría tener un alias para eso? :)
posdef
Gracias. No es lo que estoy buscando (aclararé la pregunta), pero sin duda es útil y aprendí un montón de perl.
dotancohen
¡Muy agradable! ¡Y gracias por enseñarme algo de perl!
dotancohen
3

La forma más fácil sin instalar ningún software adicional es hacer grep --colorlo que quiera. Para resaltar el tamaño del archivo de la salida ls, debe ejecutar algo así (a veces resaltará no solo el tamaño):

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

De lo contrario, consulte la pregunta similar sobre SO.

prisa
fuente
Gracias. De hecho, resaltar el número no es lo que estoy buscando. He aclarado la pregunta. En cualquier caso, ¡+1 por enseñarme algo nuevo!
dotancohen