jhchen
jhchen

Reputation: 14767

How to remove all files ending with ~ made by Emacs

Whenever I edit files on emacs, it seems a temporary file is created with the same name with ~ appended to it. Does anyone know an quick/easy way to delete all of these files in the working directory?

Upvotes: 49

Views: 41693

Answers (8)

Marius
Marius

Reputation: 559

I prefer to use the command utility fd (https://github.com/sharkdp/fd) to do this.

This command will delete all files ending with ~ in the current directory, excluding files in .emacs.d/backups/. Run the command without -X rm first to see which files would be deleted.

fd --glob "*~" -tf -u -E .emacs.d/backups/ -X rm
  • --glob "*~" find everything ending with ~
  • -tf everything that is of type file
  • -u search hidden folders
  • -E .emacs.d/backups/ don't search inside of .emacs.d/backups/
  • -X rm with each search result execute rm, and thus delete it

Upvotes: 0

Sid Sarasvati
Sid Sarasvati

Reputation: 845

In eamcs dired mode:

d Flag this file for deletion.

u Remove deletion flag on this line.

DEL Move point to previous line and remove the deletion flag on that line.

x Delete the files that are flagged for deletion.

# : Flag all auto-save files (files whose names start and end with `#') for deletion

~ : Flag all backup files (files whose names end with `~') for deletion

& : Flag for deletion all files with certain kinds of names, names that suggest you could easily create the files again

. : Flag excess numeric backup files for deletion. The oldest and newest few backup files of any one file are exempt; the middle ones are flagged.

% d regexp RET : Flag for deletion all files whose names match the regular expression regexp.

Upvotes: 4

Brian Roach
Brian Roach

Reputation: 76908

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

EDIT: Huh ... while this works, I posted it thinking rm *~ would cause the shell to interpolate ~ into the user's home dir. It doesn't, at least with the version of bash on this machine - YMMV, of course.

Some versions of find have a -delete option:

find . -name '*~' -delete

Upvotes: 33

ShreevatsaR
ShreevatsaR

Reputation: 39083

While all the others answers here correctly explain how to remove the files, you ought to understand what's going on. Those files ending in ~ are backup files, automatically created by Emacs. They can be useful sometimes. If you're annoyed by the files and want to delete them every time, then you either

(1). prevent the creation of backup files:

(setq make-backup-files nil)

or

(2). Have it save the backup files in some other directory, where they won't bother you unless you go looking for them. I have the following in my .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
  )

(Only the first line is crucial.) To see documentation about backup-directory-alist, type C-h v backup-directory-alist.

Upvotes: 119

Rémi
Rémi

Reputation: 8342

You can open the directory in emacs, flag all backup file with ~ then delete them with x

Upvotes: 5

Dale Hagglund
Dale Hagglund

Reputation: 16440

From the working directory:

$ rm *~

From everywhere:

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

From within emacs, using dired.

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

You can suppress backup file creation permanently by adding the following line to your ~/.emacs

(setq make-backup-files nil)

I don't recommend this last one, as emacs's backup files have saved me many times over the years.

Upvotes: 7

Michael Mrozek
Michael Mrozek

Reputation: 175415

You can just

rm *\~

More usefully, you can change the emacs backup directory so all those files are stored in a common location, by adding this to your .emacs:

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

There are other options you can fiddle with

Upvotes: 9

YOU
YOU

Reputation: 123841

rm -rf *~ 

Upvotes: 5

Related Questions