如何删除Emacs制作的所有以~结尾的文件

问题描述 投票:0回答:8

每当我在 emacs 上编辑文件时,似乎都会创建一个同名的临时文件,并附加 ~ 。有谁知道删除工作目录中所有这些文件的快速/简单方法?

emacs backup
8个回答
117
投票

虽然这里的所有其他答案都正确解释了如何删除文件,但您应该了解发生了什么。那些以 ~ 结尾的文件是 backup 文件,由 Emacs 自动创建。它们有时很有用。如果您对这些文件感到恼火并且每次都想删除它们,那么您可以

(1)。防止创建备份文件:

(setq make-backup-files nil)

(2)。让它将备份文件保存在其他目录中,除非您去寻找它们,否则它们不会打扰您。我的 .emacs 中有以下内容:

(setq backup-directory-alist '(("." . "~/.emacs.d/backup"))
  backup-by-copying t    ; Don't delink hardlinks
  version-control t      ; Use version numbers on backups
  delete-old-versions t  ; Automatically delete excess backups
  kept-new-versions 20   ; how many of the newest versions to keep
  kept-old-versions 5    ; and how many of the old
  )

(只有第一行至关重要。)要查看有关

backup-directory-alist
的文档,请输入 C-h v backup-directory-alist


33
投票
find . -name '*~' -exec rm {} \;

编辑:嗯...虽然这有效,但我发布它认为

rm *~
会导致shell将
~
插入到用户的主目录中。事实并非如此,至少对于这台机器上的 bash 版本来说是这样 - 当然,YMMV。

某些版本的

find
-delete
选项:

find . -name '*~' -delete

10
投票

你可以

rm *\~

更有用的是,您可以通过将其添加到 .emacs 来更改 emacs 备份目录,以便所有这些文件都存储在一个公共位置:

'(backup-directory-alist (quote (("." . "/common/backup/path"))))

还有您可以摆弄其他选项


7
投票

来自工作目录:

$ rm *~

来自各地:

$ cd; find . -name '*~' | xargs rm -f

在 emacs 中,使用

dired

C-x C-f . RET ~ x y e s RET

您可以通过将以下行添加到 ~/.emacs 来永久禁止创建备份文件

(setq make-backup-files nil)

我不推荐最后一个,因为多年来 emacs 的备份文件已经救了我很多次。


5
投票
rm -rf *~ 

5
投票

您可以在 emacs 中打开该目录,用

~
标记所有备份文件,然后用
x

删除它们

4
投票

在 eamcs 定向模式下:

d 标记此文件以进行删除。

u 删除该行的删除标志。

DEL 将点移动到上一行并删除该行上的删除标志。

x 删除标记为删除的文件。

# : 将所有自动保存文件(名称以“#”开头和结尾的文件)标记为删除

~ : 将所有备份文件(名称以“~”结尾的文件)标记为删除

& :标记删除具有特定名称的所有文件,这些名称表明您可以轻松地再次创建文件

。 :标记多余的数字备份文件以进行删除。任一文件的最旧和最新的几个备份文件除外;中间的有标记。

%d regexp RET : 删除所有名称与正则表达式 regexp 匹配的文件的标志。


0
投票

我更喜欢使用命令实用程序

fd
(https://github.com/sharkdp/fd) 来执行此操作。

该命令将删除当前目录下所有以~结尾的文件,不包括

.emacs.d/backups/
中的文件。 首先运行不带
-X rm
的命令来查看哪些文件将被删除。

fd --glob "*~" -tf -u -E .emacs.d/backups/ -X rm
  • --glob "*~"
    找到所有以
    ~
  • 结尾的内容
  • -tf
    文件类型的所有内容
  • -u
    搜索隐藏文件夹
  • -E .emacs.d/backups/
    不要在
    .emacs.d/backups/
  • 内部搜索
  • -X rm
    对每个搜索结果执行rm,从而删除它
© www.soinside.com 2019 - 2024. All rights reserved.