Localice y elimine todos los archivos temporales en el directorio de usuarios

12

Uso mucho vim y mi área tiene muchas fallas de energía. El resultado es que obtengo muchos *.swparchivos dispersos en mi PC.

Quiero un alias de rmcomando que elimina todos los archivos con cualquiera .swp, ~, .netrwhist, .logo .baksistema de extensiones de ancho (o al menos en mi directorio personal) . El comando debería eliminar el directorio de inicio / ancho del sistema de archivos incluso cuando estoy encendido ~/Desktop.

¿Cómo puedo implementar eso?

Santosh Kumar
fuente
Qué tal:find ./ -name \*\~ | xargs /bin/rm
Emanuel Berg
Además, si los ~archivos le molestan, alias ls to ls -B. Al menos no los verás.
Emanuel Berg
@EmanuelBerg find ./ -name \*\~ | xargs /bin/rmno funciona cuando estoy en ~ / Desktop y hay algún ~archivo en el directorio de inicio. Mira mi pregunta, lo que dije.
Santosh Kumar
3
Tres palabras: suministro de energía ininterrumpible . No enciendo una computadora sin una.
cjm
2
@Santosh, entonces necesitas un UPS mejor. Un tiempo de ejecución mínimo debe ser de 5 minutos. 8 segundos ni siquiera te dan tiempo para apagar la computadora (como obviamente has notado).
cjm

Respuestas:

11

Esto eliminará todos los archivos con un nombre que termina en .swp, ~, .netrwhist, .logo .baken cualquier lugar bajo su directorio personal. Sin aviso, sin confirmación, sin recuperación, los archivos se han ido para siempre.

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

(A propósito omito *.logporque suena peligroso, esta no es una extensión común para archivos temporales y hay muchos archivos no temporales con ese nombre).

Si su sistema operativo no es Linux, reemplácelo -deletepor -exec rm {} +.

Quizás debería configurar Vim para colocar sus archivos de intercambio en un solo directorio configurando la directoryopción :

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

Cree el directorio primero. Al //final, el nombre del archivo de intercambio incluye la ubicación del directorio del archivo original, de modo que los archivos con el mismo nombre en directorios diferentes no provoquen un bloqueo.

Puede hacer lo mismo con los archivos de respaldo con la backupdiropción , aunque tiene mucho menos sentido.

Si usa Emacs, configure auto-save-file-name-transformspara apuntar cada archivo a un solo directorio.

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

Si está apuntando específicamente a archivos vim, le recomendaría que use la backupdirvariable. :h backupdirdice:

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

Yo uso esta línea en mi .vimrc:

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

También debe crear el directorio ~ / .vim-tmp si ya no existe, porque no lo crea para usted.

Frederik Deweerdt
fuente
OK, eso es útil. Pero gedit genera *~archivos.
Santosh Kumar
0

Respuesta corta Elimina los temporales que terminan con ~

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

O a otros como .swap, etc.

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