Recherchez et supprimez tous les fichiers temporaires dans le répertoire utilisateur

12

J'utilise beaucoup Vim et ma région a beaucoup de coupures de courant. Le résultat est donc que je reçois de nombreux *.swpfichiers dispersés sur mon PC.

Je veux un alias de rmcommande qui supprime tous les fichiers avec soit .swp, ~, .netrwhist, .logou .baksystème d'extensions large (ou du moins dans mon répertoire personnel) . La commande devrait supprimer le répertoire / home du système de fichiers même lorsque je suis activé ~/Desktop.

Comment puis-je l'implémenter?

Santosh Kumar
la source
Que diriez-vous:find ./ -name \*\~ | xargs /bin/rm
Emanuel Berg
De plus, si les ~fichiers vous dérangent, alias ls ls -B. Au moins, vous ne les verrez pas.
Emanuel Berg,
@EmanuelBerg find ./ -name \*\~ | xargs /bin/rmne fonctionne pas lorsque je suis sur ~ / Desktop et qu'il y a un ~fichier dans le répertoire personnel. Voir ma question, ce que j'ai dit.
Santosh Kumar
3
Trois mots: alimentation sans coupure . Je n'allume pas un ordinateur sans un.
cjm
2
@Santosh, alors vous avez besoin d'un meilleur onduleur. Un temps d'exécution minimum doit être de 5 minutes. 8 secondes ne vous donnent même pas le temps d'éteindre l'ordinateur (comme vous l'avez évidemment remarqué).
cjm

Réponses:

11

Ceci supprimera tous les fichiers avec un nom se terminant par .swp, ~, .netrwhist, .logou .bakpartout dans votre répertoire personnel. Aucune invite, aucune confirmation, aucune récupération, les fichiers ont disparu pour toujours.

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

(J'omet délibérément *.logparce que cela semble dangereux, ce n'est pas une extension courante pour les fichiers temporaires et il y a beaucoup de fichiers non temporaires avec ce nom.)

Si votre système d'exploitation n'est pas Linux, remplacez-le -deletepar -exec rm {} +.

Vous devriez peut-être configurer Vim pour placer ses fichiers d'échange dans un seul répertoire en définissant l' directoryoption :

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

Créez d'abord le répertoire. À //la fin, le nom du fichier d'échange inclut l'emplacement du répertoire du fichier d'origine, de sorte que les fichiers portant le même nom dans différents répertoires ne provoquent pas de plantage.

Vous pouvez faire la même chose pour les fichiers de sauvegarde avec l' backupdiroption , bien que cela ait beaucoup moins de sens.

Si vous utilisez Emacs, définissez auto-save-file-name-transformspour pointer chaque fichier vers un seul répertoire.

(setq auto-save-file-name-transforms
      '("\\`.*\\'" "~/tmp/emacs-auto-save-files/\\&" t))
Gilles 'SO- arrête d'être méchant'
la source
1

Si vous ciblez spécifiquement les fichiers vim, je vous recommande d'utiliser la backupdirvariable. :h backupdirdit:

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

J'utilise cette ligne dans mon .vimrc:

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

Vous devez également créer le répertoire ~ / .vim-tmp s'il n'existe pas déjà, car cela ne le crée pas pour vous.

Frederik Deweerdt
la source
OK, c'est utile. Mais gedit génère des *~fichiers.
Santosh Kumar
0

Réponse courte Supprime les temporels qui se terminent par ~

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

Ou d'autres comme .swap etc.

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