Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 按数字字段(子字符串)对文件名排序_Bash_Sorting - Fatal编程技术网

Bash 按数字字段(子字符串)对文件名排序

Bash 按数字字段(子字符串)对文件名排序,bash,sorting,Bash,Sorting,我在文件夹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]_0

我在文件夹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 
在u上拆分字段并按字段2到3排序:

有关-t/-field separator=SEP和-k/-key=KEYDEF的说明,请参阅

如果字段不是零填充的,则希望使用-n进行数字排序:

sort -t_ -k2n -k3n
这将按第二个字段的数值进行排序,然后按第三个字段的数值进行排序。要调试排序如何解释字段,请使用-debug标志运行

sort -t_ -k2n -k3n