Couleur différente pour la gamme KiB en `ls -l`

9

Existe-t-il un moyen sensé de mettre en évidence les 4e, 5e et 6e colonnes à droite de la taille du fichier ls -l? Mon intention est de faciliter la lecture d'une taille de fichier, que ce soit en octets, en Ko ou en MiB. Je connais le -hdrapeau, mais je trouve que devoir interpréter les lettres à la fin est plus lourd que de simplement regarder et voir la longueur du nombre (magnitude). C'est la même raison pour laquelle les voitures de course utilisent des cadrans analogiques au lieu de numériques.

Mon obus cible est Bash. Merci.

EDIT: Je cherche à mettre en évidence les milliers, dix mille et cent mille places de la colonne de taille. Comme ceci: 123 456 789

dotancohen
la source
Peut-être que cela peut vous aider: unix.stackexchange.com/a/49270/14084
Bernhard
Merci, Bernhard! J'utilise votre solution à cette question tous les jours, je l'ai lslaliasée avec quelques changements mineurs. En fait, la réponse à cette question sera combinée avec votre technique là-bas dans mon lslalias.
dotancohen
@dotancohen Ah, je ne savais pas que c'était le même gars qui posait la question, mais je faisais allusion à cette réponse ls ++ ici :)
Bernhard
Je vois. ls ++ ne résout malheureusement pas ce problème.
dotancohen
@Bernhard: Il a encore besoin de quelques ajustements, mais jetez un œil: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

Réponses:

7

Peut-être quelque chose comme:

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'

Pour le noir (ou quelle que soit la couleur de premier plan par défaut sur votre terminal) pour les tailles de 0 à 1023, le vert de 1k à 1M, le jaune pour 1M à 1G, puis le rouge, le violet, le bleu.

Modifier . En fonction de vos exigences modifiées:

ls -l | perl -pe 's{^((?:\S+\s+){4}\d*)(\d{3})(?=\d{3})}
                   {$1\e[31;1m$2\e[m}'
Stéphane Chazelas
la source
Cool! Je suppose que l'on voudrait avoir un alias pour ça? :)
posdef
Merci. Ce n'est pas ce que je recherche (je vais clarifier la question) mais c'est certainement utile et je viens d'en apprendre un tas de perl!
dotancohen
Très agréable! Et merci de m'avoir appris du perl!
dotancohen
3

La façon la plus simple de ne pas installer de logiciel supplémentaire est de faire grep --colorce que vous voulez. Pour mettre en évidence la taille du fichier à partir de la sortie ls, vous devez exécuter quelque chose comme ça (parfois, il mettra en évidence non seulement la taille):

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

Sinon, veuillez vous référer à la question similaire sur SO.

se ruer
la source
Je vous remercie. En fait, mettre en évidence le nombre n'est pas ce que je recherche. J'ai clarifié la question. En tout cas, +1 en raison de m'apprendre quelque chose de nouveau!
dotancohen