Borrado automático de ficheros en función de su contenido (Unix)
Gracias a tres sencillos comandos Unix (probados en HP-UX) es muy fácil localizar, borrar o listar ficheros que tengan una cadena de texto determinada.
Con la combinación de los comandos: grep, find, exec, rm y ll podemos realizar estas tres tareas de una manera masiva y segura.
Localiza los ficheros que contienen una determinada cadena de caracteres y muestra la linea en la que aparece dicha cadena:
find . -exec grep -i ‘texto que debe contener el fichero’ {} \;
Primero hacemos un find y a este lo completamos con la ejecución de un grep con el modificador -i para que busque la cadena de texto que a continuación metemos entre comillas simples (también funciona con comillas dobles como se mostrará a continuación).
Borra todos los ficheros que contengan una determinada cadena de caracteres:
find . -type f -exec grep -q “texto que debe contener el fichero” {} \; -exec rm -f {} +
En este caso al final hacemos un -exec rm -f para que borre sin preguntar lo que haya encontrado en el find anterior
Listado de los ficheros que contienen la cadena en cuestión y guardado del listado en un log:
find . -type f -exec grep -q “ksugetosstat failed: op = pstat_getprocessor, location = slsgetactive ()” {} \; -exec ll -lrt {} + > /tmp/listado_de_ficheros.log
En este caso ejecutamos un ll -lrt para sacar el listado ordenado por tiempo de los ficheros que contienen la cadena y guardarlo en un log. Si quitamos: > /tmp/listado_de_ficheros.log en lugar de meterlo en ese log nos lo sacará por pantalla.
Consejo: Si planificamos estos comandos en el crontab podremos planificar y automatizar estas acciones.
Por favor, si te ha gustado este artículo puntúalo pulsando sobre las estrellas.
1.685 veces visto
