Linux eliminando archivos temporales.

Linux eliminando archivos temporales.

Estaba intentando eliminar archivos que terminan con tilde usando el comando rm *.*~, pero eso no elimina los archivos que comienzan con a .y terminan con ~, por ejemplo .somefile~. También lo intenté rm *~, pero eso tampoco funciona con archivos que comienzan con .. ¿Alguien puede explicar por qué es así?

Quiero eliminar todos los archivos que terminan en ~, independientemente de si comienzan con a .o no (estaba intentando hacerlo sin find/exec). ¿Es eso posible?

Respuesta1

Los archivos que comienzan con a .están ocultos de forma predeterminada y no aparecen en un formato ls. Como es posible que no los haya visto, los shells generalmente no coincidirán con estos archivos a menos que los incluya manualmente. Puedes hacer esto de la siguiente manera:

rm *~ .*~

Respuesta2

Aunque la respuesta anterior es probablemente más segura (debido a que tiene menos efectos secundarios), para completar...

El shell bash (que es lo que la mayoría de la gente ejecuta en Linux) tiene una bandera para indicar si se incluyen o no archivos de puntos en globs. Lo configuras con shopt -s dotglob. La siguiente secuencia es antes de configurar la bandera y luego después de configurarla. Observe que rm lo eliminará una vez que se configure dotglob.

$ touch .somefile~
$ rm *~
rm: cannot remove `*~': No such file or directory
$ ls -A
.somefile~
$ shopt -s dotglob
$ rm *~
$ ls -A
$

Un poco menos seguro; en teoría, puedes olvidar si esto está configurado o no. Pero si desea establecer esto en todas partes y es coherente al respecto, puede que sea lo que desee.

información relacionada