ls -l经过一些修改

时间:2011-11-16 20:30:31

标签: bash ls

我想对ls -l命令进行一些更改。

首先,我想删除第一个“总X”行,因为我不使用它。

然后,我想显示目录最顶层。 (或者,更确切地说,根据类型排序。)

第三,我希望在相同类型的情况下根据名称进行排序。

用脚本或函数式语言编写,或者甚至用C编写,这几乎是微不足道的,但是我从我读过的东西中获得灵感,你不应该为所有东西编写新东西,而是结合你拥有的工具。几个小时(!!)之后,我想出了这个:

ls -l | tac | head -n -1 | sort -k 1.1,1.2 -k 9

感觉有点傻,似乎有效。但是:

慢:

real 0m0.009s
user 0m0.008s
sys 0m0.008s

而不是ls -l:

real 0m0.003s
user 0m0.004s
sys 0m0.000s

没有颜色! (使用ls -l,字典为蓝色等)

所以,如果你知道更好的方法,请拍摄:)。

3 个答案:

答案 0 :(得分:5)

man ls,我的意思是,尝试一下。

第二,第三和没有颜色

$> ls -l --group-directories-first --sort=extension --color=never

如果您需要颜色,请使用--color=auto--color=always

对于第一个问题,例如有一个duplicate

实际上,您可以使用awk删除第一行:

awk '{ if ( NR > 1 ) print }'

因此结果命令看起来像

$> ls -l --group-directories-first --sort=extension --color=always | awk '{ if ( NR > 1 ) print }'

答案 1 :(得分:3)

ls -l --group-directories-first -X --color=always | tail -n +2

  • - group-directories-first - 显而易见的
  • -X - 按扩展名排序
  • - color = always - 当没有写入tty时,甚至是输出颜色(我们不是因为我们正在管道到head

答案 2 :(得分:0)

至于颜色,您可以使用ls --color=yes