【发布时间】:2019-03-21 11:22:34
【问题描述】:
我想根据文件名对文件列表进行排序。
输入
280900_b24.txt
280900_b23.txt
280900_b25.txt
280900_b28.txt
280900.txt
280900_b27.txt
280900_b22.txt
280900_b30.txt
280900_b29.txt
280902.txt
280902_b01.txt
280901_b08.txt
280901.txt
280900_b26.txt
预期输出
280902_b01.txt
280902.txt
280901_b08.txt
280901.txt
280900_b30.txt
280900_b29.txt
280900_b28.txt
280900_b27.txt
280900_b26.txt
280900_b25.txt
280900_b24.txt
280900_b23.txt
280900_b22.txt
280900.txt
我能得到的最接近的是 sort -r
280902.txt
280902_b01.txt
280901.txt
280901_b08.txt
280900.txt
280900_b30.txt
280900_b29.txt
280900_b28.txt
280900_b27.txt
280900_b26.txt
280900_b25.txt
280900_b24.txt
280900_b23.txt
280900_b22.txt
但我希望带有 _b# 的文件位于名称中没有 _b# 的文件之前。示例:我希望 280902_b01.txt 在 280902.txt 之前。
【问题讨论】:
-
但是点的 ASCII 数字值小于下划线的值,所以排序顺序不会按字母顺序排列。但是你可以跳过第 7 个字符