答案1
这里有错别字维基页面你引用的,从实际来看源代码,'r' 应该意味着撤销, 代替修订,它应该切换升序和降序。版本选项确实对索引/版本号进行排序,如其他评论和答案所述。
摘录相关源代码:
case 'e': /* File extension */
cfg.extnorder ^= 1;
cfg.sizeorder = 0;
cfg.timeorder = 0;
cfg.apparentsz = 0;
cfg.blkorder = 0;
cfg.reverse = 0;
entrycmpfn = &entrycmp;
break;
case 'r': /* Reverse sort */
cfg.reverse ^= 1;
entrycmpfn = cfg.reverse ? &reventrycmp : &entrycmp;
break;
case 's': /* File size */
cfg.sizeorder ^= 1;
cfg.timeorder = 0;
cfg.apparentsz = 0;
cfg.blkorder = 0;
cfg.extnorder = 0;
cfg.reverse = 0;
entrycmpfn = &entrycmp;
break;
... ...
case 'v': /* Version */
cfg.version ^= 1;
namecmpfn = cfg.version ? &xstrverscasecmp : &xstricmp;
cfg.timeorder = 0;
cfg.sizeorder = 0;
cfg.apparentsz = 0;
cfg.blkorder = 0;
cfg.extnorder = 0;
break;
答案2
不区分大小写的版本(又称自然)排序
对我来说,这听起来像 n³ 可以检测文件名中的版本号,例如nnn-v4.8.tar.gz
并按照与版本号相符的方式对其进行排序。
例如,如果你做了一个简单的按字典顺序对文本进行排序,你最终可能会得到如下结果:
- 1.0
- 10.0(因为
1
在 之前2
) - 2.0
- 20.0
- 20.0-alpha(因为较短的匹配先于较长的匹配)
而版本感知排序将产生:
- 1.0
- 2.0
- 10.0
- 20.0-alpha
- 20.0
这语义版本规范包含如何对版本进行排序的一个具体示例。我不知道这是否正是 n³ 所使用的,但大多数版本排序算法的工作方式都类似。
我不知道 n³ 所说的“修订”的具体含义,但有些应用程序在文件名或内容元数据中包含修订号。