Eliminando archivos con determinado nombre usando grep y rm

Digamos que tienes que eliminar una lista de archivos que tiene que cumplir con dos patrones:

  1. el nombre de archivo, o prefijo, y
  2. una fecha.

Pero, como siempre, hay algo de basura en los nombres que no deja ser feliz.

Algo como:

PREFIJO_cadena_aleatoria_FECHA_hora.dat

donde la cadena aleatoria suele ser parte de algún hash con md5 o alguna cadena que se usa como id. Como sea, el punto es que si tenemos algo de la forma:

registro_de_ventas_d4d31355_20191109_102215.dat

es bastante difícil poder aplicar dos comodines de estrella, como:

registro_de_ventas_*_2019*

Lo que se puede hacer es lo siguiente:

ls registro_de_ventas* | grep _2019 | xargs rm

Es decir:

  • Seleccionamos todos los archivos que comiencen con registro_de_ventas,
  • y de esa lista, solamente seleccionamos los del año anterior mediante un grep,
  • y finalmente la lista resultante se usa como argumento para rm.

Se debe utilizar el comando xargs porque rm no acepta directamente como entrada las impresiones a pantalla.

Y ya.

Con eso puedes eliminar archivos filtrados mediante diversos comandos de Linux.



Publicado: 2020-11-11





¿Tienes algún comentario?

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *