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

min*_*ndy 6 ls sorting pipe ubuntu

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

ls -al | sort -k5
Run Code Online (Sandbox Code Playgroud)

这些文件按以下顺序列出:

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
Run Code Online (Sandbox Code Playgroud)

这在按文件大小排序方面显然是失败的。除了 之外-k5,我还尝试了许多其他列,结果一再变得混乱、无序。我也试过了-nk5,还是不行。我究竟做错了什么?

Mar*_*tin 8

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

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

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

在我的 Hardy Heron 上测试,这些工作:

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

sort --version 产量:6.10


Bil*_*hor 5

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