如何通过管道排序在Ubuntu中按列排序ls?


6

我是一个Linux新手试图了解管道在Ubuntu终端中的工作原理。我试图按文件大小排序:

ls -al | sort -k5

这些文件按此顺序列出:

drwx------ 19 min10 domain users      0 2010-10-07 12:38 .
drwx------ 29 min10 domain users      0 2010-02-16 22:30 MSI
drwx------  2 min10 domain users      0 2009-11-25 19:53 www
drwx------  2 min10 domain users      0 2010-02-05 09:14 .cache
drwx------  2 min10 domain users      0 2010-03-02 08:11 My Pictures
drwx------  2 min10 domain users      0 2010-03-02 10:41 regu
drwx------  2 min10 domain users      0 2010-03-31 13:08 elec
drwx------  2 min10 domain users      0 2010-04-10 21:43 temp
drwx------  2 min10 domain users      0 2010-10-06 09:13 bubbla
drwx------  3 min10 domain users      0 2010-01-26 08:26 cfg
drwx------  3 min10 domain users      0 2010-03-30 15:34 data
drwx------  3 min10 domain users      0 2010-03-30 16:03 idv
drwx------  3 min10 domain users      0 2010-04-01 09:10 arduino-0018
drwx------  3 min10 domain users      0 2010-04-14 15:10 processing-1.1
drwx------  3 min10 domain users      0 2010-07-06 16:20 eclipse
drwx------  4 min10 domain users      0 2010-04-15 09:34 pryl
drwx------  4 min10 domain users      0 2010-07-06 16:30 dv2
-rwx------  1 min10 domain users    123 2010-10-07 12:38 starwars.txt
-rwx------  1 min10 domain users  16109 2010-10-06 07:01 .bash_history
-rwx------  1 min10 domain users 454656 2010-03-30 15:29 putty.exe
-rwx------  1 min10 domain users    504 2010-04-10 21:16 little.gif
-rwx------  1 min10 domain users  56682 2010-04-10 21:12 awesome.jpg
-rwx------  1 min10 domain users      7 2010-04-10 21:32 blah.txt

这显然是按文件大小排序的失败。我尝试了另外一堆其他列-k5,并且反复弄乱,乱序,结果。我也尝试了-nk5,但仍然没有去。我究竟做错了什么?


ls -al | sort -k5对我的作品,你能在输出编辑ls -al
Nifle

好的,我完成了输出。感谢您的答复。
意识到2010年

Answers:


8

您显示的输出按字母顺序排序,而不是数字排序。尝试添加:

-n--numeric-sort 根据字符串数值进行比较

编辑:我刚注意到在你的输出中,文件大小列似乎是第6个!你试过-nk6吗?

在我的哈代苍鹭上测试,这些工作:

  • ls -al | sort -nk5
  • ls -al | sort -k5n
  • ls -al | sort -k5 -n
  • ls -al | sort -k5 --numeric-sort

sort --version 产量:6.10


谢谢,马丁。这与我已经尝试过的-nk5有什么不同?我只是尝试将-n放入命令中的不同位置,但这似乎没有什么区别。
想法

@mindy:不知道为什么-n不适合你。再试一次-nk6?:-)
Martin 2010年

@Martin:你错过sort了你的例子(ls -al | -nk5等等)。
cYrus 2010年

@Martin:最后一个不起作用,因为你没有指定参数k
cYrus 2010年

啊,你是对的。我曾尝试过-n而且我曾尝试过-k6,但我没有尝试过它们。现在它有效。我很困惑为什么它是第六列。我算五。1)权限2)一些数字3)所有者名称4)组名5)文件大小
mindy 2010年

4

要按大小排序,请尝试'ls -S'或'ls -rS'。


谢谢,但由于我指定我的目标是学习管道,这不回答问题。
2010年
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.