gpt4 book ai didi

Emacs -- 按修改日期对目录/文件列表进行排序

转载 作者:行者123 更新时间:2023-12-05 00:24:18 42 4
gpt4 key购买 nike

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

这个线程的目标是创建一个按修改日期/时间排序的列表——最新的在列表的开头,最旧的在列表的结尾。

最后,我想将该详细列表转换为文件/目录绝对路径的简单列表——保持与上述排序相同的顺序。

最佳答案

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

首先,您希望通过比较每个条目的第 6 个元素来对列表进行排序。您可以使用 native Emacs Lisp sort 来做到这一点。函数,它将比较函数作为第二个元素:

(sort (directory-files-and-attributes "~")
#'(lambda (x y) (time-less-p (nth 6 x) (nth 6 y))))

使用 Common Lisp 排序函数可能更清楚地实现相同的目的:
(cl-sort (directory-files-and-attributes "~")
#'time-less-p
:key #'(lambda (x) (nth 6 x)))

现在你只想提取每个条目的第一个元素——使用 mapcar将函数应用于列表的所有元素:
(mapcar #'car
(sort (directory-files-and-attributes "~")
#'(lambda (x y) (time-less-p (nth 6 x) (nth 6 y)))))

关于Emacs -- 按修改日期对目录/文件列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26514437/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com