Найдите и удалите все временные файлы в пользовательском каталоге

12

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

Я хочу , чтобы псевдоним rmкоманды , которая удаляет все файлы с любой .swp, ~, .netrwhist, .logили .bakсистема расширений ширины (или по крайней мере в моем домашнем каталоге) . Команда должна удалить файлы system system / home, даже когда я включен ~/Desktop.

Как я могу реализовать это?

Сантош Кумар
источник
Как насчет:find ./ -name \*\~ | xargs /bin/rm
Эмануэль Берг
Также, если ~файлы содержат ошибки, псевдоним ls to ls -B. По крайней мере, вы их не увидите.
Эмануэль Берг
@EmanuelBerg find ./ -name \*\~ | xargs /bin/rmне работает, когда я нахожусь на ~ / Desktop, и ~в домашнем каталоге есть какой-либо файл. Смотри мой вопрос, что я сказал.
Сантош Кумар
3
Три слова: источник бесперебойного питания . Я не включаю компьютер без него.
CJM
2
@ Сантош, тогда тебе нужен лучший ИБП. Минимальное время работы должно составлять 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
Хосе Веландия
источник