Emacs lisp:如何在目录中获取最新文件?

arv*_*ixx 6 directory emacs elisp file

给定目录的路径,如何返回该目录中最新文件的路径?

xuc*_*ang 7

使用内置API也可以实现:

(defun latest-file (path)
  "Get latest file (including directory) in PATH."
  (car (directory-files path 'full nil #'file-newer-than-file-p)))

(latest-file "~/.emacs.d") ;; => "/Users/xcy/.emacs.d/var"
Run Code Online (Sandbox Code Playgroud)

如果您还需要子目录下的文件,请使用directory-files-recursively而不是directory-files.如果要排除目录,请首先使用过滤文件/目录列表file-directory-p.


arv*_*ixx 3

使用f

(defun aj-fetch-latest (path)
  (let ((e (f-entries path)))
    (car (sort e (lambda (a b)
                   (not (time-less-p (aj-mtime a)
                                     (aj-mtime b))))))))
(defun aj-mtime (f) (let ((attrs (file-attributes f))) (nth 5 attrs)))
Run Code Online (Sandbox Code Playgroud)