首页 > 解决方案 > 排序目录文件

问题描述

我有以下目录:

当我使用

(list (directory-files dir t "\\(mod\\)\\([0-9]\\)" nil))

输出是:

如您所见,mod100的位置不正确。所需的输出是:

感谢您的意见

标签: sortingemacs

解决方案


提供一个提取数字部分的自定义谓词函数:

(sort
 (directory-files dir t "\\(mod\\)\\([0-9]\\)" nil)
 (lambda (x y)
   (<
    (string-to-number (replace-regexp-in-string ".*mod\\([[:digit:]]+\\).*" "\\1" x))
    (string-to-number (replace-regexp-in-string ".*mod\\([[:digit:]]+\\).*" "\\1" y)))))

推荐阅读