Eliminando archivos con determinado nombre usando grep y rm
Publicado: 2020-11-11Digamos que tienes que eliminar una lista de archivos que tiene que cumplir con dos patrones:
- el nombre de archivo, o prefijo, y
- 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.