我想使用 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