列出emacs创建的编号备份文件的规范方法是什么?

列出emacs创建的编号备份文件的规范方法是什么?,emacs,elisp,Emacs,Elisp,我知道如何配置emacs以保留编号备份。我不知道找到那些编号备份的最规范的方法 emacs函数find backup file name似乎是最接近的。其文件规定: 此函数用于计算文件名的新备份文件的文件名。它还可能建议删除某些现有备份文件。find backup file name返回一个列表,其中CAR是新备份文件的名称,CDR是建议删除的备份文件的列表 然而,这不是我想要的。我正在查找以前创建的所有备份文件的列表。以下是我为实现这一目标而编写的代码: (defvar backup-dire

我知道如何配置emacs以保留编号备份。我不知道找到那些编号备份的最规范的方法

emacs函数find backup file name似乎是最接近的。其文件规定:

此函数用于计算文件名的新备份文件的文件名。它还可能建议删除某些现有备份文件。find backup file name返回一个列表,其中CAR是新备份文件的名称,CDR是建议删除的备份文件的列表

然而,这不是我想要的。我正在查找以前创建的所有备份文件的列表。以下是我为实现这一目标而编写的代码:

(defvar backup-directory "~/emacs.d/backups/")
(defun get-backup-pattern (file-name)
    (concat "*" (replace-regexp-in-string "\/" "\\!" file-name t t) ".~*"))

(butlast
  (split-string
    (shell-command-to-string
        (concat "find " 
                 backup-directory 
                 " -name \"" 
                 (get-backup-pattern (buffer-file-name)) 
                 "\""))
    "\n"))
这种方法效果很好。然而,炮轰出来寻找似乎是一个黑客给我;特别是因为这种方法是特定于平台的


有没有我应该使用的内置方法或至少是更惯用的方法?

就我个人而言,我不会将备份文件保存在中心文件夹中,因此无法提供工作代码,但如果您想搜索目录的内容,请使用目录文件。

因此,我决定使用以下解决方案。我不再使用*nix find命令,而是按照建议使用目录文件

(defun get-filter-pattern (file-name)
  (concat (replace-regexp-in-string "\/" "!" file-name t t)
      ".~[0-9]*~*$"))

(defun filter (condp lst)
  (delq nil
    (mapcar (lambda (x) (and (funcall condp x) x)) lst)))

(defun filter-files (backup-directory buffer-file-name)
  (mapcar (lambda (backup-name) (concat backup-directory backup-name))
      (filter (lambda (backup-name)
            (string-match (get-filter-pattern buffer-file-name) backup-name))
          (directory-files backup-directory))))

也许这并不像使用find那样优化。但是,它应该是独立于平台的,ie可以在Windows上使用。

这不是一个坏主意。它允许我以独立于平台的方式获取所有文件。但是,我仍然需要进一步筛选该列表。