`ls -l`のKiB範囲の異なる色


9

でファイルサイズの右から4番目、5番目、6番目の列を強調表示する正気な方法はありますls -lか?私の意図は、ファイルサイズをバイト、KiB、またはMiBで読みやすくすることです。-h旗については知っていますが、数字の長さ(大きさ)を見て見ているだけではなく、末尾の文字を解釈する必要がある方が煩雑であることがわかりました。これは、レースカーがデジタルではなくアナログダイヤルを使用するのと同じ理由です。

私のターゲットシェルはBashです。ありがとう。

編集:私は、サイズの列の数千、1万、および10万の場所を強調表示しようとしています。このように:123 456 789


多分これはあなたを助けることができます:unix.stackexchange.com/a/49270/14084
Bernhard

ありがとう、ベルンハルト!私は毎日その質問に対するあなたの解決策を使用していますがlsl、いくつかのマイナーな変更を加えてエイリアスを設定しています。実際、この質問への答えは、私のlslエイリアスであなたのテクニックと組み合わされます。
dotancohen

@dotancohenああ、それは質問をしているのと同じ人であることに気づきませんでしたが、私は実際にはこのls ++の回答をここで参照していました:)
Bernhard

そうですか。残念ながら、ls ++はこの問題に対応していません。
dotancohen

@Bernhard:まだ調整が必要ですが、見てみましょう: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

回答:


7

多分次のようなもの:

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'

黒(または端末のデフォルトの前景色)のサイズは0〜1023、緑は1k〜1M、黄色は1M〜1G、次に赤、紫、青。

編集。編集した要件に基づいて:

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

涼しい!私はそのためのエイリアスが欲しいと思いますか?:)
posdef 2012年

ありがとう。それは私が探しているものではありません(質問を明確にします)が、確かに役に立ち、Perlの多くを学んだだけです!
dotancohen

非常に素晴らしい!そして私にいくつかのパールを教えてくれてありがとう!
dotancohen

3

追加のソフトウェアをインストールせずに最も簡単な方法は、grep --colorあなたが望むものに行くことです。ls出力からファイルサイズを強調表示するには、そのようなものを実行する必要があります(サイズだけでなく強調表示されることもあります)。

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

それ以外の場合は、SOで同様の質問を参照してください。


ありがとうございました。実際、数字を強調することは私が探しているものではありません。質問を明確にしました。いずれにせよ、何か新しいことを教えてくれたことによる+1!
dotancohen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.