首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按修改日期对目录/文件进行排序

按修改日期对目录/文件进行排序
EN

Stack Overflow用户
提问于 2014-10-22 18:22:53
回答 1查看 1.3K关注 0票数 4

函数(directory-files-and-attributes "~/" 'full nil t)为主目录创建一个未排序的文件和目录列表。结果似乎是类似于file-attributes的格式,其文档可以在以下链接中查看:node/elisp/File-Attributes.html

这个线程的目标是创建一个按修改日期/时间排序的列表--在列表的开头使用最新的列表,在列表的末尾使用最老的列表。

最后,我想把这个详细的列表变成一个简单的列表,列出文件/目录的绝对路径--保持与上述排序相同的顺序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-22 20:02:09

directory-files-and-attributes返回一个列表。值得庆幸的是,有许多Lisp函数可以转换列表。

首先,您希望通过比较每个条目的6个元素来排序列表。您可以使用本机Emacs sort函数来实现这一点,该函数将比较函数作为第二个元素:

代码语言:javascript
复制
(sort (directory-files-and-attributes "~")
      #'(lambda (x y) (time-less-p (nth 6 x) (nth 6 y))))

使用Common排序函数可以更清楚地实现同样的目标:

代码语言:javascript
复制
(cl-sort (directory-files-and-attributes "~")
         #'time-less-p
         :key #'(lambda (x) (nth 6 x)))

现在只需要提取每个条目的第一个元素--使用mapcar对列表中的所有元素应用一个函数:

代码语言:javascript
复制
(mapcar #'car
        (sort (directory-files-and-attributes "~")
              #'(lambda (x y) (time-less-p (nth 6 x) (nth 6 y)))))
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26514437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档