Exclusão automática de arquivos de backup

9

Ao editar arquivos, alguns foo.bar~ backups são exibidos (arquivos que terminam com um til ~). Como posso controlar suas criações e é possível solicitar uma exclusão em massa recursiva de todos os arquivos de um diretório específico e de todos os seus subdiretórios?

smonff
fonte
Existem realmente duas perguntas aqui; "Como posso controlar as suas criações" parece ser um duplicado parcial de emacs.stackexchange.com/questions/33/...
Shosti

Respostas:

8

Você pode criar todos os arquivos de backup para um diretório com

(setq backup-directory-alist `(("." . "~/.emacs.bak")))

e desligue-o completamente com

(setq make-backup-files nil)

embora ninguém o recomende.

Fazer backups apenas para alguns projetos não é fácil: você precisará inverter essa variável em vários ganchos.

Por fim, solicitar a exclusão em massa é exatamente equivalente a:

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

então é melhor fazer isso no shell.

artagnon
fonte
pode usar -delete em vez de -exec, é muito mais rápido porque não gera um novo processo.
Xah Lee 25/09
4

diredfacilita a exclusão de todos os arquivos de backup em um diretório - de dired, basta digitar ~para marcar os arquivos de backup para exclusão e xexecutar a exclusão.

shosti
fonte
3

De https://www.gnu.org/software/emacs/manual/html_node/emacs/Backup-Names.html#Backup-Names

É possível customizar a variável backup-directory-alist para especificar que os arquivos correspondentes a determinados padrões devem ser copiados em diretórios específicos. Essa variável se aplica a backups únicos e numerados. Um uso típico é adicionar um elemento (".". Dir) para fazer todos os backups no diretório com o nome absoluto dir; O Emacs modifica os nomes dos arquivos de backup para evitar conflitos entre arquivos com os mesmos nomes originados em diretórios diferentes. Como alternativa, a adição de (".". ". ~") Faria backups no subdiretório invisível. ~ Do diretório do arquivo original. O Emacs cria o diretório, se necessário, para fazer o backup.

Se você definir a variável make-backup-file-name-function para uma função Lisp adequada, isso substitui a maneira usual pelo qual o Emacs constrói os nomes dos arquivos de backup.

Você também pode definir o EMACS para manter backups numerados e manter apenas um determinado número de backups, embora isso possa ser pior do que apenas um backup para cada arquivo. Consulte https://www.gnu.org/software/emacs/manual/html_node/emacs/Backup-Deletion.html

M Smith
fonte