2013-04-30 59 views
4

文件列表:多个领域和数字排序

sysbench-size-256M-mode-rndrd-threads-1 
sysbench-size-256M-mode-rndrd-threads-16 
sysbench-size-256M-mode-rndrd-threads-4 
sysbench-size-256M-mode-rndrd-threads-8 
sysbench-size-256M-mode-rndrw-threads-1 
sysbench-size-256M-mode-rndrw-threads-16 
sysbench-size-256M-mode-rndrw-threads-4 
sysbench-size-256M-mode-rndrw-threads-8 
sysbench-size-256M-mode-rndwr-threads-1 
sysbench-size-256M-mode-rndwr-threads-16 
sysbench-size-256M-mode-rndwr-threads-4 
sysbench-size-256M-mode-rndwr-threads-8 
sysbench-size-256M-mode-seqrd-threads-1 
sysbench-size-256M-mode-seqrd-threads-16 
sysbench-size-256M-mode-seqrd-threads-4 
sysbench-size-256M-mode-seqrd-threads-8 
sysbench-size-256M-mode-seqwr-threads-1 
sysbench-size-256M-mode-seqwr-threads-16 
sysbench-size-256M-mode-seqwr-threads-4 
sysbench-size-256M-mode-seqwr-threads-8 

我谨模式(rndrd,rndwr等)对它们进行排序,然后数:

sysbench-size-256M-mode-rndrd-threads-1 
sysbench-size-256M-mode-rndrd-threads-4 
sysbench-size-256M-mode-rndrd-threads-8 
sysbench-size-256M-mode-rndrd-threads-16 
sysbench-size-256M-mode-rndrw-threads-1 
sysbench-size-256M-mode-rndrw-threads-4 
sysbench-size-256M-mode-rndrw-threads-8 
sysbench-size-256M-mode-rndrw-threads-16 
.... 

我已经试过了下面的循环,但它是由数排序,但我需要的序列,例如1,4,8,16:

$ for f in $(ls -1A); do echo $f; done | sort -t '-' -k 7n 

编辑:

请注意,数字排序(N)的数量对其进行排序(1,1,1,1,4,4,4,4 ...),但我需要一个像1,4,8,16,1序列,4,8,16 ......

回答

4

for循环是完全不必要的,因为-1参数为ls管道输出。收益率为

ls -A | sort -t- -k 5,5 -k 7,7n 

其中第一个键在第5列开始和结束,第二个键在第7列开始和结束并且是数字。

5

排序列:

sort -t- -k5,5 -k7n 

主排序是第5列(而不是休息,这就是为什么5,5),在第7栏按号码排序中学。

+0

该命令被接受,但似乎悄悄忽略'N'(使用GNU排序8.20) – msw 2013-04-30 11:50:07

+0

@msw:哎呀,我的错误。我mislpaced了'N'! – choroba 2013-04-30 11:52:35