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.