Unterschiedliche Farbe für den KiB-Bereich in `ls -l`

9

Gibt es eine vernünftige Möglichkeit, die 4., 5. und 6. Spalte rechts von der Dateigröße in hervorzuheben ls -l? Meine Absicht ist es, das Lesen einer Dateigröße zu vereinfachen, sei es in Bytes, KiBs oder MiBs. Ich weiß etwas über die -hFlagge, aber ich finde, dass es umständlicher ist, die Buchstaben am Ende interpretieren zu müssen, als nur die Länge der Zahl (Größe) zu sehen und zu sehen. Dies ist der gleiche Grund, warum Rennwagen analoge statt digitale Zifferblätter verwenden.

Meine Zielhülle ist Bash. Vielen Dank.

BEARBEITEN: Ich möchte die Tausenden, Zehntausenden und Hunderttausenden Stellen der Größenspalte hervorheben. So: 123 456 789

dotancohen
quelle
Vielleicht kann Ihnen dies helfen: unix.stackexchange.com/a/49270/14084
Bernhard
Danke, Bernhard! Ich verwende Ihre Lösung für diese Frage jeden Tag. Ich habe lslmich mit einigen geringfügigen Änderungen darauf eingestellt. Tatsächlich wird die Antwort auf diese Frage dort in meinem lslAlias mit Ihrer Technik kombiniert .
Dotancohen
@dotancohen Ah, wusste nicht, dass es der gleiche Typ war, der die Frage stellte, aber ich bezog mich tatsächlich auf diese ls ++ Antwort hier :)
Bernhard
Aha. ls ++ behebt dieses Problem leider nicht.
Dotancohen
@Bernhard: Es muss noch etwas optimiert werden, aber werfen Sie einen Blick darauf: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

Antworten:

7

Vielleicht so etwas wie:

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'

Für Schwarz (oder was auch immer die Standardvordergrundfarbe auf Ihrem Terminal ist) für Größen von 0 bis 1023, Grün von 1k bis 1M, Gelb für 1M bis 1G, dann Rot, Lila, Blau.

Bearbeiten . Basierend auf Ihren bearbeiteten Anforderungen:

ls -l | perl -pe 's{^((?:\S+\s+){4}\d*)(\d{3})(?=\d{3})}
                   {$1\e[31;1m$2\e[m}'
Stéphane Chazelas
quelle
Cool! Ich nehme an, man möchte dafür einen Alias ​​haben? :)
posdef
Vielen Dank. Es ist nicht das, wonach ich suche (ich werde die Frage klären), aber es ist auf jeden Fall hilfreich und ich habe gerade ein paar Perl daraus gelernt!
dotancohen
Sehr schön! Und danke, dass du mir Perl beigebracht hast!
Dotancohen
3

Der einfachste Weg, zusätzliche Software zu installieren, ist das, grep --colorwas Sie wollen. Um die Dateigröße aus der Ausgabe hervorzuheben, sollten Sie so etwas ausführen (manchmal wird nicht nur die Größe hervorgehoben):

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

Andernfalls beziehen Sie sich bitte auf die ähnliche Frage zu SO.

eilen
quelle
Vielen Dank. Tatsächlich ist das Hervorheben der Nummer nicht das, wonach ich suche. Ich habe die Frage geklärt. Auf jeden Fall +1, weil ich etwas Neues gelernt habe!
Dotancohen