Automatyczne usuwanie plików kopii zapasowych

9

Podczas edycji plików foo.bar~ pojawiają się kopie zapasowe (pliki kończące się tyldą ~). Jak mogę kontrolować ich twórczość i czy można poprosić o rekurencyjne masowe usunięcie wszystkich plików z określonego katalogu i wszystkich jego podkatalogów?

smonff
źródło
Są tu naprawdę 2 pytania; „Jak mogę kontrolować ich dzieła” wydaje się częściowym duplikatem emacs.stackexchange.com/questions/33/…
shosti

Odpowiedzi:

8

Możesz utworzyć wszystkie pliki kopii zapasowych, aby przejść do katalogu

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

i wyłącz to całkowicie za pomocą

(setq make-backup-files nil)

chociaż nikt tego nie zaleci.

Tworzenie kopii zapasowych tylko dla niektórych projektów nie jest łatwe: będziesz musiał przerzucić tę zmienną w różnych zaczepach.

Wreszcie, prośba o masowe usunięcie jest dokładnie równoważna z:

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

więc możesz być lepszy w robieniu tego w powłoce.

artagnon
źródło
może użyć -delete zamiast -exec, jest znacznie szybszy, ponieważ nie odradza się nowy proces.
Xah Lee,
4

diredułatwia usunięcie wszystkich plików kopii zapasowej z katalogu - po diredprostu wpisz, ~aby oznaczyć pliki kopii zapasowej do usunięcia i xwykonać usuwanie.

shosti
źródło
3

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

Możesz dostosować zmienną backup-katalog-alist, aby określić, że pliki pasujące do określonych wzorców powinny być archiwizowane w określonych katalogach. Ta zmienna dotyczy zarówno pojedynczych, jak i numerowanych kopii zapasowych. Typowym zastosowaniem jest dodanie elementu („.”. Dir) w celu utworzenia wszystkich kopii zapasowych w katalogu o absolutnej nazwie dir; Emacs modyfikuje nazwy plików kopii zapasowych, aby uniknąć kolizji między plikami o tych samych nazwach pochodzących z różnych katalogów. Alternatywnie dodanie („.”. „. ~”) Spowoduje utworzenie kopii zapasowych w niewidocznym podkatalogu. ~ Katalogu oryginalnego pliku. Emacs tworzy katalog, jeśli to konieczne, aby wykonać kopię zapasową.

Jeśli zdefiniujesz zmienną make-backup-file-name-function na odpowiednią funkcję Lisp, zastąpi to zwykły sposób, w jaki Emacs konstruuje nazwy plików kopii zapasowych.

Możesz także ustawić EMACS, aby zachowywał numerowane kopie zapasowe i przechowywał tylko określoną liczbę kopii zapasowych, chociaż może to być gorsze niż tylko jedna kopia zapasowa dla każdego pliku. Zobacz https://www.gnu.org/software/emacs/manual/html_node/emacs/Backup-Deletion.html

M. Smith
źródło