Localize e exclua todos os arquivos temporários no diretório do usuário

12

Eu uso muito o vim, e minha área apresenta muitas falhas de energia. Portanto, o resultado é que eu recebo muitos *.swparquivos espalhados pelo meu PC.

Eu quero um alias de rmcomando que remove todos os arquivos com qualquer um .swp, ~, .netrwhist, .logou .baksistema de extensões de largura (ou pelo menos no meu diretório home) . O comando deve excluir o diretório largo / home do sistema de arquivos, mesmo quando estou ligado ~/Desktop.

Como posso implementar isso?

Santosh Kumar
fonte
Que tal:find ./ -name \*\~ | xargs /bin/rm
Emanuel Berg
Além disso, se os ~arquivos o incomodam, o apelido é ls ls -B. Pelo menos você não os verá.
Emanuel Berg
O @EmanuelBerg find ./ -name \*\~ | xargs /bin/rmnão funciona quando estou no ~ / Desktop e há algum ~arquivo no diretório inicial. Veja minha pergunta, o que eu disse.
Santosh Kumar
3
Três palavras: Fonte de alimentação ininterrupta . Não ligo um computador sem um.
CJM
2
@ Santosh, então você precisa de um no-break melhor. Um tempo de execução mínimo deve ser de 5 minutos. 8 segundos nem lhe dão tempo para desligar o computador (como você obviamente percebeu).
CJM

Respostas:

11

Isto irá apagar todos os arquivos com um nome terminando em .swp, ~, .netrwhist, .logou .bakem qualquer lugar sob seu diretório home. Sem aviso, sem confirmação, sem recuperação, os arquivos desaparecem para sempre.

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

(Eu propositadamente omito *.logporque parece perigoso, essa não é uma extensão comum para arquivos temporários e há muitos arquivos não temporários com esse nome.)

Se o seu sistema operacional não for Linux, substitua -deletepor -exec rm {} +.

Talvez você deva configurar o Vim para colocar seus arquivos de troca em um único diretório, configurando a directoryopção :

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

Crie o diretório primeiro. No //final, o nome do arquivo de permuta inclui o local do diretório do arquivo original, para que arquivos com o mesmo nome em diretórios diferentes não causem falha.

Você pode fazer o mesmo para arquivos de backup com a backupdiropção , embora faça muito menos sentido.

Se você usa o Emacs, defina auto-save-file-name-transformspara apontar todos os arquivos para um único diretório.

(setq auto-save-file-name-transforms
      '("\\`.*\\'" "~/tmp/emacs-auto-save-files/\\&" t))
Gilles 'SO- parar de ser mau'
fonte
1

Se você estiver direcionando especificamente arquivos vim, recomendo que você use a backupdirvariável :h backupdirdiz:

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

Eu uso esta linha no meu .vimrc:

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

Também é necessário criar o diretório ~ / .vim-tmp se ele já não existir, porque não o cria para você.

Frederik Deweerdt
fonte
OK, isso é útil. Mas o gedit gera *~arquivos.
Santosh Kumar
0

Resposta curta Exclui temporais que terminam com ~

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

Ou outros como swap etc.

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