Temukan dan hapus semua file sementara di direktori pengguna

12

Saya menggunakan banyak vim, dan daerah saya sering mengalami kegagalan daya. Jadi hasilnya adalah saya mendapatkan banyak *.swpfile yang tersebar di PC saya.

Saya ingin alias rmperintah yang menghapus semua file dengan baik .swp, ~, .netrwhist, .logatau .baksistem ekstensi lebar (atau minimal dalam direktori rumah saya) . Perintah tersebut harus menghapus direktori home / sistem file bahkan ketika saya aktif ~/Desktop.

Bagaimana saya bisa menerapkannya?

Santosh Kumar
sumber
Bagaimana dengan:find ./ -name \*\~ | xargs /bin/rm
Emanuel Berg
Juga, jika ~file bug Anda, alias ls to ls -B. Setidaknya Anda tidak akan melihatnya.
Emanuel Berg
@ EmanuelBerg find ./ -name \*\~ | xargs /bin/rmtidak berfungsi ketika saya di ~ / Desktop dan ada ~file di direktori home. Lihat pertanyaan saya, apa yang saya katakan.
Santosh Kumar
3
Tiga kata: Catu daya tak terputus . Saya tidak menyalakan komputer tanpa komputer.
cjm
2
@Santosh, maka Anda perlu UPS yang lebih baik. Waktu kerja minimum adalah 5 menit. 8 detik bahkan tidak memberi Anda waktu untuk mematikan komputer (seperti yang sudah Anda perhatikan).
cjm

Jawaban:

11

Ini akan menghapus semua file dengan nama berakhiran .swp, ~, .netrwhist, .logatau .bakdi mana saja di bawah direktori home Anda. Tidak ada prompt, tidak ada konfirmasi, tidak ada pemulihan, file hilang selamanya.

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

(Sengaja saya hilangkan *.logkarena kedengarannya berbahaya, ini bukan ekstensi umum untuk file sementara dan ada banyak file tidak sementara dengan nama itu.)

Jika OS Anda bukan Linux, ganti -deletedengan -exec rm {} +.

Anda mungkin harus mengkonfigurasi Vim untuk meletakkan file swap-nya di direktori tunggal dengan mengatur directoryopsi :

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

Buat direktori terlebih dahulu. Pada //akhirnya membuat nama file swap menyertakan lokasi direktori dari file asli, sehingga file dengan nama yang sama di direktori yang berbeda tidak menyebabkan kerusakan.

Anda dapat melakukan hal yang sama untuk mencadangkan file dengan backupdiropsi , meskipun itu jauh lebih masuk akal.

Jika Anda menggunakan Emacs, atur auto-save-file-name-transformsuntuk mengarahkan setiap file ke direktori tunggal.

(setq auto-save-file-name-transforms
      '("\\`.*\\'" "~/tmp/emacs-auto-save-files/\\&" t))
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1

Jika Anda menargetkan file vim secara khusus, saya sarankan Anda menggunakan backupdirvariabel. :h backupdirmengatakan:

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

Saya menggunakan baris ini di .vimrc saya:

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

Anda juga perlu membuat direktori ~ / .vim-tmp jika sudah tidak ada, karena tidak menciptakannya untuk Anda.

Frederik Deweerdt
sumber
Oke, itu berguna. Tetapi gedit menghasilkan *~file.
Santosh Kumar
0

Jawaban Singkat Menghapus temporal yang diakhiri dengan ~

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

Atau yang lain seperti .swap dll.

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