Eliminación automática de archivos de respaldo

9

Al editar archivos, foo.bar~ aparecen algunas copias de seguridad (archivos que terminan en tilde ~). ¿Cómo puedo controlar sus creaciones, y es posible solicitar una eliminación masiva recursiva de todos los archivos de un directorio específico y todos sus subdirectorios?

smonff
fuente
Realmente hay 2 preguntas aquí; "Cómo puedo controlar sus creaciones" parece un duplicado parcial de emacs.stackexchange.com/questions/33/…
shosti el

Respuestas:

8

Puede hacer que todos los archivos de respaldo vayan a un directorio con

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

y apagarlo completamente con

(setq make-backup-files nil)

aunque nadie lo recomendará.

Hacer copias de seguridad solo para algunos proyectos no es fácil: tendrá que voltear esa variable en varios ganchos.

Finalmente, solicitar una eliminación masiva es exactamente equivalente a:

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

así que podría ser mejor hacerlo en el shell.

artagnon
fuente
podría usar -delete en lugar de -exec, es mucho más rápido porque no genera nuevos procesos.
Xah Lee
4

diredfacilita la eliminación de todos los archivos de copia de seguridad en un directorio: diredsimplemente escriba ~para marcar los archivos de copia de seguridad para su eliminación y xejecutar la eliminación.

shosti
fuente
3

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

Puede personalizar la variable backup-directory-alist para especificar que los archivos que coinciden con ciertos patrones deben ser respaldados en directorios específicos. Esta variable se aplica a las copias de seguridad individuales y numeradas. Un uso típico es agregar un elemento (".". Dir) para hacer todas las copias de seguridad en el directorio con el nombre absoluto dir; Emacs modifica los nombres de los archivos de respaldo para evitar conflictos entre archivos con los mismos nombres que se originan en diferentes directorios. Alternativamente, agregar, (".". ". ~") Haría copias de seguridad en el subdirectorio invisible. ~ Del directorio del archivo original. Emacs crea el directorio, si es necesario, para hacer la copia de seguridad.

Si define la variable make-backup-file-name-function como una función Lisp adecuada, eso anula la forma habitual en que Emacs construye los nombres de los archivos de respaldo.

También puede configurar EMACS para que mantenga copias de seguridad numeradas y solo mantenga un número determinado de copias de seguridad, aunque esto puede ser peor que una sola copia de seguridad para cada archivo. Ver https://www.gnu.org/software/emacs/manual/html_node/emacs/Backup-Deletion.html

M Smith
fuente