Kis范围在`ls -l`中的不同颜色


9

有什么明智的方法可以从中突出显示文件大小右侧的第4列,第5列和第6列ls -l?我的意图是使读取文件大小变得容易,无论是字节,KiB还是MiB。我确实知道该-h标志,但是我发现必须在末尾解释字母比仅查看并查看数字的长度(幅度)更为麻烦。这就是赛车使用模拟转盘而不是数字转盘的相同原因。

我的目标外壳是Bash。谢谢。

编辑:我想突出显示大小列的成千上万个位置。就像这样:123 456 789


也许这可以为您提供帮助:unix.stackexchange.com/a/49270/14084
Bernhard

谢谢,伯恩哈德!我每天都会使用您的解决方案来解决这个问题,我lsl对此做了些微的改动,以此作为别名。实际上,这个问题的答案将与您在lsl别名中的技术结合在一起。
dotancohen 2012年

@dotancohen啊,没有意识到这是同一个人在问这个问题,但是我实际上是在这里指这个ls ++的答案:)
Bernhard 2012年

我知道了。不幸的是,ls ++无法解决此问题。
dotancohen 2012年

@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 2012年

Answers:


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 2012年

非常好!并感谢您教给我一些Perl!
dotancohen 2012年

3

无需安装任何其他软件的最简单方法就是grep --color随心所欲。要从ls输出突出显示文件大小,您应该运行类似的命令(有时它将不仅突出显示大小):

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

否则,请参考关于SO 的类似问题


谢谢。实际上,突出显示数字不是我想要的。我已经澄清了这个问题。无论如何,+ 1是要教我一些新知识!
dotancohen 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.