Kullanıcı dizinindeki tüm geçici dosyaları bulma ve silme


12

Vim'i çok kullanıyorum ve bölgemde çok fazla elektrik kesintisi var. Sonuç olarak *.swpPC'ye dağılmış birçok dosya alıyorum.

Ben bir takma ad istediğiniz rmiçeren tüm dosyaları siler komuta .swp, ~, .netrwhist, .logveya .bakuzantıları sistem genelinde (veya en az benim ev dizininde) . Komut, ben açıkken bile dosya sistemi / home dizinini silmeli ~/Desktop.

Bunu nasıl uygulayabilirim?


Nasıl olur:find ./ -name \*\~ | xargs /bin/rm
Emanuel Berg

Ayrıca, ~dosyalar size hata, takma ad ls ls -B. En azından onları görmeyeceksin.
Emanuel Berg

@EmanuelBerg find ./ -name \*\~ | xargs /bin/rm~ / Masaüstünde olduğumda ve ~giriş dizininde herhangi bir dosya olduğunda çalışmaz . Soruma bakın, ne dedim.
Santosh Kumar

3
Üç kelime: Kesintisiz güç kaynağı . Bilgisayarsız bir bilgisayarı açmıyorum.
cjm

2
@Santosh, o zaman daha iyi bir UPS'e ihtiyacınız var. Minimum çalışma süresi 5 dakika olmalıdır. 8 saniye bile bilgisayarı kapatmanız için size zaman vermez (açıkça fark ettiğiniz gibi).
cjm

Yanıtlar:


11

Bu biten bir isimle tüm dosyaları siler .swp, ~, .netrwhist, .logveya .bakherhangi bir yerde ev dizininin altında. İstem yok, onay yok, kurtarma yok, dosyalar sonsuza dek gitti.

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

( *.logKulağa tehlikeli geldiği için ihmal ediyorum , bu geçici dosyalar için ortak bir uzantı değildir ve bu ada sahip geçici olmayan birçok dosya vardır.)

OS, Linux değilse, değiştirin -deletetarafından -exec rm {} +.

Belki de directoryseçeneği ayarlayarak Vim'i takas dosyalarını tek bir dizine koyacak şekilde yapılandırmalısınız :

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

Önce dizini oluşturun. //Sonunda takas dosyası adı farklı dizinlerde aynı isimde dosyalar çökmesine neden olmaz böylece, orijinal dosyanın dizin konumu içerir yapar.

Yedekleme dosyaları için aynı şeyi backupdirseçenekle yapabilirsiniz , ancak çok daha az mantıklıdır.

Emacs kullanıyorsanız, auto-save-file-name-transformsher dosyayı tek bir dizine işaret edecek şekilde ayarlayın .

(setq auto-save-file-name-transforms
      '("\\`.*\\'" "~/tmp/emacs-auto-save-files/\\&" t))

1

Özellikle vim dosyalarını hedefliyorsanız, backupdirdeğişkeni kullanmanızı tavsiye ederim . :h backupdirdiyor:

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

Bu satırı benim .vimrc dosyasında kullanıyorum:

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

Ayrıca zaten yoksa ~ / .vim-tmp dizini oluşturmanız gerekir, çünkü bunu sizin için oluşturmaz.


Tamam, bu yararlı. Ancak gedit *~dosya üretir .
Santosh Kumar

0

Kısa Yanıt ~ ile biten zamansalları siler

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

Veya diğerleri .swap vb.

find . -type f \( -iname "*.swp" \) -delete
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.