今天在windows 11 中创建了如下3个目录:如下三个目录名
20251230-150758-20260111-121939
20251230152329-20260111-121504
20260111-120721
但在按名称排序时,结果却是
20251230-150758-20260111-121939
20260111-120721
20251230152329-20260111-121504
笔者一直在思考为什么会按这个顺序呢?最后笔者查询了一些资料,发现有如下规则
在 Windows 文件资源管理器中,文件和文件夹的默认排序方式是“按名称”进行“自然排序”(Natural Sort),也称为“数字感知排序”(Numerical-aware sorting)。
这种排序方式会尝试将字符串中的数字部分当作整数来比较,而不是逐字符比较(字典序)。
第一步:理解自然排序 vs 字典排序
字典排序(Lexicographic):逐字符比较 ASCII 值。例如 "10" < "2",因为 '1' < '2'。
自然排序(Natural):识别连续数字并作为整数比较。例如 "10" > "2"。
Windows 使用的是自然排序。所有名字都以日期时间格式开头,但格式略有不同:
A: 20251230-150758-20260111-121939 → 以 20251230 开头 B: 20251230152329-20260111-121504 → 以 20251230152329 开头(没有第一个 -) C: 20260111-120721 → 以 20260111 开头
关键点在于:A 和 B 虽然都以 20251230 开始,但 B 没有 - 分隔符,导致 Windows 把整个前缀当作一个更长的数字。
如果我们希望按时间顺序正确排序,应保持命名格式一致,例如始终使用 - 分隔日期和时间
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/19468130
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!
浙公网安备 33010602011771号