我在文件夹A1中有一组文件,具有以下命名约定:
MCU1_0001_01
MCU2_0002_01
MCU1_0001_02
MCU2_0002_02
MCU1_0003_01
MCU2_0003_02
中间的4位数值继续递增,直到值34,而MCU之后的值在1和2之间交替,并且字符串末尾的最后两位数也是如此。
话虽如此, 我想先根据中间值对这些文件进行排序,然后是字符串末尾的值,第二个。 注意,我也对排序" MCU"后面的值不感兴趣。
我该怎么做?
这就是我一直在尝试的
ls MCU[12]_00[0-9][0-9]_0[12] sort -t
答案 0 :(得分:1)
拆分_
上的字段,并按字段2
排序到3
:
$ ls | sort -t_ -k2,3
MCU1_0001_01
MCU1_0001_02
MCU2_0002_01
MCU2_0002_02
MCU1_0003_01
MCU2_0003_02
有关-t
/ --field-separator=SEP
和-k
/ --key=KEYDEF
的说明,请参阅man sort
。
如果您的字段未填零,则需要使用-n
进行数字排序:
sort -t_ -k2n -k3n
(按第二个字段的数值排序,然后按第三个字段的数值排序)。要调试sort
解释字段的方式,请使用--debug
标志运行。