Znajdź i usuń wszystkie pliki tymczasowe z katalogu użytkownika

12

Często używam vima, aw mojej okolicy często brakuje prądu. W rezultacie otrzymuję wiele *.swpplików rozproszonych na moim komputerze.

Chcę aliasu w rmpoleceniu, który usuwa wszystkie pliki z albo .swp, ~, .netrwhist, .loglub .bakukład rozszerzenia szerokości (lub przynajmniej w moim katalogu domowym) . Polecenie powinno usunąć katalog całego systemu plików / home, nawet gdy jestem włączony ~/Desktop.

Jak mogę to wdrożyć?

Santosh Kumar
źródło
Co powiesz na:find ./ -name \*\~ | xargs /bin/rm
Emanuel Berg,
Ponadto, jeśli ~pliki Cię boli, alias ls to ls -B. Przynajmniej ich nie zobaczysz.
Emanuel Berg,
@EmanuelBerg find ./ -name \*\~ | xargs /bin/rmnie działa, gdy jestem na ~ / Desktop i ~w katalogu domowym jest dowolny plik. Zobacz moje pytanie, co powiedziałem.
Santosh Kumar,
3
Trzy słowa: nieprzerwany zasilacz . Nie włączam komputera bez niego.
cjm
2
@Santosh, potrzebujesz lepszego UPS. Minimalny czas działania powinien wynosić 5 minut. 8 sekund nie daje nawet czasu na wyłączenie komputera (jak oczywiście zauważyłeś).
cjm

Odpowiedzi:

11

Spowoduje to usunięcie wszystkich plików z nazwą kończącym się w .swp, ~, .netrwhist, .loglub .bakgdziekolwiek pod swoim katalogu domowym. Bez pytania, bez potwierdzenia, bez odzyskiwania, pliki zniknęły na zawsze.

find ~ -type f \( -name '*.swp' -o -name '*~' -o -name '*.bak' -o -name '.netrwhist' \) -delete

(Celowo pomijam, *.logponieważ brzmi to niebezpiecznie, nie jest to powszechne rozszerzenie dla plików tymczasowych i istnieje wiele plików innych niż tymczasowe o tej nazwie).

Jeśli Twoim systemem operacyjnym nie jest Linux, zamień -deletena -exec rm {} +.

Być może powinieneś skonfigurować Vima, aby umieszczał pliki wymiany w jednym katalogu, ustawiając directoryopcję :

set dir=~/tmp/vim-swap-files//,/var/tmp//

Najpierw utwórz katalog. Na //końcu powoduje, że nazwa pliku wymiany zawiera lokalizację katalogu oryginalnego pliku, dzięki czemu pliki o tej samej nazwie w różnych katalogach nie powodują awarii.

Możesz zrobić to samo z plikami kopii zapasowej za pomocą tej backupdiropcji , choć ma to o wiele mniej sensu.

Jeśli używasz Emacsa, ustaw, auto-save-file-name-transformsaby każdy plik był skierowany do jednego katalogu.

(setq auto-save-file-name-transforms
      '("\\`.*\\'" "~/tmp/emacs-auto-save-files/\\&" t))
Gilles „SO- przestań być zły”
źródło
1

Jeśli szczególnie celujesz w pliki vim, polecam użycie backupdirzmiennej. :h backupdirmówi:

'backupdir' 'bdir'      string  (default for Amiga: ".,t:",
                                 for MS-DOS and Win32: ".,c:/tmp,c:/temp"
                                 for Unix: ".,~/tmp,~/")
                        global
                        {not in Vi}
        List of directories for the backup file, separated with commas.
        - The backup file will be created in the first directory in the list
          where this is possible.  The directory must exist, Vim will not
          create it for you.
        [... snip ...]

Używam tej linii w moim .vimrc:

set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp

Musisz także utworzyć katalog ~ / .vim-tmp, jeśli już nie istnieje, ponieważ nie tworzy go dla Ciebie.

Frederik Deweerdt
źródło
OK, to się przydaje. Ale gedit generuje *~pliki.
Santosh Kumar,
0

Krótka odpowiedź Usuwa czasowe, które kończą się na ~

find . -type f \( -iname "*~" \) -delete

Lub inne, takie jak .swap itp ..

find . -type f \( -iname "*.swp" \) -delete
Jose Velandia
źródło