Suchen und löschen Sie alle temporären Dateien im Benutzerverzeichnis

12

Ich benutze vim oft und in meiner Gegend gibt es häufig Stromausfälle. Das Ergebnis ist, dass ich viele *.swpDateien über meinen PC verstreut bekomme .

Ich mag eine Alias - rmBefehl, der alle Dateien mit entweder entfernt .swp, ~, .netrwhist, .logoder .bakErweiterungen systemweit (oder zumindest in meinem Home - Verzeichnis) . Der Befehl sollte das dateisystemweite Verzeichnis / home löschen, auch wenn ich eingeschaltet bin ~/Desktop.

Wie kann ich das umsetzen?

Santosh Kumar
quelle
Wie wäre es mit:find ./ -name \*\~ | xargs /bin/rm
Emanuel Berg
Wenn Sie durch die ~Dateien gestört werden, lautet der Alias ​​"ls to" ls -B. Zumindest wirst du sie nicht sehen.
Emanuel Berg,
@EmanuelBerg find ./ -name \*\~ | xargs /bin/rmfunktioniert nicht, wenn ich auf ~ / Desktop bin und sich eine ~Datei im Home-Verzeichnis befindet. Siehe meine Frage, was ich gesagt habe.
Santosh Kumar
3
Drei Wörter: Unterbrechungsfreie Stromversorgung . Ich schalte keinen Computer ohne ein.
cjm
2
@ Santosh, dann brauchst du eine bessere USV. Eine Mindestlaufzeit sollte 5 Minuten betragen. 8 Sekunden geben Ihnen nicht einmal Zeit, den Computer herunterzufahren (wie Sie offensichtlich bemerkt haben).
cjm

Antworten:

11

Dies löscht alle Dateien mit einem Namen der Endung .swp, ~, .netrwhist, .logoder .baküberall in Ihrem Home - Verzeichnis. Keine Aufforderung, keine Bestätigung, keine Wiederherstellung, die Dateien sind für immer verschwunden.

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

(Ich verzichte absichtlich darauf, *.logweil es gefährlich klingt. Dies ist keine übliche Erweiterung für temporäre Dateien, und es gibt viele nicht-temporäre Dateien mit diesem Namen.)

Wenn Ihr Betriebssystem nicht Linux ist, ersetzen Sie es -deletedurch -exec rm {} +.

Sie sollten Vim möglicherweise so konfigurieren, dass die Auslagerungsdateien in einem einzigen Verzeichnis gespeichert werden, indem Sie die folgende directoryOption festlegen :

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

Erstellen Sie zuerst das Verzeichnis. Am //Ende schließt der Name der Auslagerungsdatei den Verzeichnispfad der Originaldatei ein, damit Dateien mit demselben Namen in verschiedenen Verzeichnissen nicht zum Absturz führen.

Sie können dasselbe für Sicherungsdateien mit der backupdirOption tun , obwohl dies viel weniger sinnvoll ist.

Wenn Sie Emacs verwenden, legen Sie fest auto-save-file-name-transforms, dass jede Datei auf ein einzelnes Verzeichnis verweist.

(setq auto-save-file-name-transforms
      '("\\`.*\\'" "~/tmp/emacs-auto-save-files/\\&" t))
Gilles 'SO - hör auf böse zu sein'
quelle
1

Wenn Sie speziell auf VIM-Dateien abzielen, würde ich die Verwendung der backupdirVariablen empfehlen . :h backupdirsagt:

'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 ...]

Ich benutze diese Zeile in meiner .vimrc:

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

Außerdem müssen Sie ein ~ / .vim-tmp-Verzeichnis erstellen, falls es noch nicht existiert, weil es das nicht für Sie erstellt.

Frederik Deweerdt
quelle
OK, das ist nützlich. Aber gedit generiert *~Dateien.
Santosh Kumar
0

Kurze Antwort Löscht Zeitangaben, die mit ~ enden

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

Oder andere wie .swap etc ..

find . -type f \( -iname "*.swp" \) -delete
Jose Velandia
quelle