Знайдіть та видаліть усі тимчасові файли в каталозі користувачів


12

Я багато використовую vim, і в моєму районі дуже багато відключень електроенергії. Таким чином, я отримую багато *.swpфайлів, розкиданих по моєму ПК.

Я хочу , щоб псевдонім rmкоманди , яка видаляє всі файли з будь-якої .swp, ~, .netrwhist, .logабо .bakсистема розширень ширини (або по крайней мере в моєму домашньому каталозі) . Команда повинна видалити файлову систему з широкого / домашнього каталогу, навіть коли я ввімкнувся ~/Desktop.

Як я можу так реалізувати?


Як щодо:find ./ -name \*\~ | xargs /bin/rm
Емануель Берг

Крім того, якщо ~файли вас помиляють, псевдонім ls to ls -B. Принаймні, ви їх не побачите.
Емануель Берг

@EmanuelBerg find ./ -name \*\~ | xargs /bin/rmне працює, коли я перебуваю на ~ / Desktop і ~в домашньому каталозі є будь-який файл. Дивіться моє запитання, що я сказав.
Сантош Кумар

3
Три слова: джерело безперебійного живлення . Я не включаю комп’ютер без одного.
cjm

2
@Santosh, тоді вам потрібен кращий ДБЖ. Мінімальна тривалість виконання повинна становити 5 хвилин. 8 секунд навіть не дають вам часу вимкнути комп'ютер (як ви, очевидно, помітили).
cjm

Відповіді:


11

Це дозволить видалити всі файли з ім'ям , що закінчується на .swp, ~, .netrwhist, .logабо .bakде - небудь під вашої домашньої директорії. Ні підказок, ні підтвердження, ні відновлення, файли назавжди зникли.

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

(Я навмисно опускаю , *.logбо це звучить небезпечно, це не є загальним розширення для тимчасових файлів і є багато не-тимчасових файли з цим ім'ям.)

Якщо ваша ОС не Linux, замініть -deleteїї -exec rm {} +.

Вам, можливо, слід налаштувати Vim для розміщення файлів свопінгу в одному каталозі, встановивши directoryпараметр :

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

Спершу створіть каталог. //В кінці робить ім'я файлу підкачки , включаючи місце розташування каталогу вихідного файлу, так що файли з однаковим ім'ям в різних каталогах , не викликають збій.

Можна зробити те ж саме, що і для резервних файлів з backupdirопцією , хоча це має набагато менший сенс.

Якщо ви використовуєте Emacs, встановіть, auto-save-file-name-transformsщоб кожен файл вказував на один каталог.

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

1

Якщо ви орієнтуєтесь конкретно на файли vim, я рекомендую вам використовувати цю backupdirзмінну. :h backupdirкаже:

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

Я використовую цей рядок у своєму .vimrc:

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

Також вам потрібно створити каталог ~ / .vim-tmp, якщо він вже не існує, тому що не створює цього для вас.


Гаразд, це корисно. Але gedit створює *~файли.
Сантош Кумар

0

Короткий відповідь Видаляє тимчасові елементи, які закінчуються на ~

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

Або інші, як .swap тощо.

find . -type f \( -iname "*.swp" \) -delete
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.