Colore diverso per la gamma KiB in `ls -l`


9

C'è un modo sano per evidenziare la 4a, 5a e 6a colonna a destra della dimensione del file ls -l? La mia intenzione è quella di rendere semplice la lettura di una dimensione del file in byte, KiB o MiB. Conosco la -hbandiera, ma trovo che dover interpretare le lettere alla fine sia più complicato del semplice guardare e vedere la lunghezza del numero (grandezza). Questo è lo stesso motivo per cui le auto da corsa usano quadranti analogici anziché digitali.

La mia shell di destinazione è Bash. Grazie.

EDIT: sto cercando di evidenziare le migliaia, le diecimila e le centomila posizioni della colonna delle dimensioni. In questo modo: 123 456 789


Forse questo può aiutarti: unix.stackexchange.com/a/49270/14084
Bernhard

Grazie Bernhard! Uso la tua soluzione a questa domanda ogni giorno, ho fatto delle lslalias con qualche piccola modifica. In effetti, la risposta a questa domanda sarà combinata con la tua tecnica nel mio lslpseudonimo.
dotancohen,

@dotancohen Ah, non avevo capito che era lo stesso ragazzo a fare la domanda, ma in realtà mi riferivo a questa risposta ls ++ qui :)
Bernhard,

Vedo. Purtroppo ls ++ non affronta questo problema.
dotancohen,

@ Bernard: ha ancora bisogno di qualche modifica, ma dai un'occhiata: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

Risposte:


7

Forse qualcosa del tipo:

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'

Per il nero (o qualunque sia il colore di primo piano predefinito sul terminale) per dimensioni da 0 a 1023, verde da 1k a 1M, giallo per 1M a 1G, quindi rosso, viola, blu.

Modifica . In base ai requisiti modificati:

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

Freddo! Presumo che uno vorrebbe avere un alias per quello però? :)
posdef

Grazie. Non è quello che sto cercando (chiarirò la domanda) ma è sicuramente utile e ho appena imparato un sacco di perl da esso!
dotancohen,

Molto bella! E grazie per avermi insegnato un po 'di Perl!
dotancohen,

3

Il modo più semplice per installare qualsiasi software aggiuntivo è grep --colorquello che desideri. Per evidenziare le dimensioni del file dall'output di ls dovresti eseguire qualcosa del genere (a volte evidenzierà non solo le dimensioni):

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

Per il resto, si prega di fare riferimento alla domanda simile su SO.


Grazie. In effetti, evidenziare il numero non è quello che sto cercando. Ho chiarito la domanda. In ogni caso, +1 per avermi insegnato qualcosa di nuovo!
dotancohen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.