GNU 使用前缀和一位或两位数字对文件名进行排序

GNU 使用前缀和一位或两位数字对文件名进行排序

我想使用 GNU sort 让find命令中的文件名按名称中的数字排序。文件名为“cycle”,然后是第一个要排序的数字,然后是“.subset”,然后是第二个要排序的数字,然后是“.”,然后是第三个要排序的数字。简单排序不起作用,因为第一个数字可以是一个或多个数字:

find /tmp/folder/ -name "cycle*"  | sort
/tmp/folder/cycle10.subset1.2
/tmp/folder/cycle11.subset1.2
/tmp/folder/cycle12.subset1.2
/tmp/folder/cycle1.subset1.2
/tmp/folder/cycle2.subset1.2
/tmp/folder/cycle3.subset1.2
/tmp/folder/cycle4.subset1.2
/tmp/folder/cycle5.subset1.2
/tmp/folder/cycle6.subset1.2
/tmp/folder/cycle7.subset1.2
/tmp/folder/cycle8.subset1.2
/tmp/folder/cycle9.subset1.2
[...]

有任何想法吗?

答案1

...|排序--debug-n-t/-k4.6

--debug将告诉您sort在执行其工作时会考虑哪些因素。
实际使用时请将其移除。

sort --help列出可用的选项,man sort可能会提供更多信息。

答案2

任何字符都可以作为字段分隔符:

-t, --field-separator=SEP
使用 SEP 代替非空白到空白的过渡

... | sort --debug -n -ty -k2.4
... | sort --debug -n -tl -k3.2
... | sort --debug -n -te -k3.1

相关内容