El shell de linux: Buscar ficheros y eliminar líneas que contengan un patrón dentro del fichero

Cuando uno comienza a trabajar en el shell de Linux, tiende a resolver ciertos problemas utilizando bucles. Ahora bien, cuando se empieza a conocer comandos y la forma de combinarlos, descubre la verdadera potencia del shell y lo que puede reducirse el código de un script.

En este post, vamos a ver cómo realizar una combinación de comandos que nos permita buscar ficheros y eliminar líneas que contengan un patrón:

find /home/profesor/ -type f -path "*.config/siatic/siaticcontrol.ini" -print0 | xargs -0 sed -i /sonidoInicio/d

Si os dáis cuenta, estamos utilizando dos comandos:

find /home/profesor/ -type f -path "*.config/siatic/siaticcontrol.ini" -print0
xargs -0 sed -i /sonidoInicio/d

El primero, busca ficheros (-type f) en la ruta relativa es "*.config/siatic/siaticcontrol.ini" dentro de /home/profesor/ y los muestra, usando como separador un caracter null (esta es la función de print0)

El segundo, toma los nombres de los ficheros obtenidos por el comando anterior (xargs -0) y, utilizando el comando sed, elimina las líneas que contengan el patrón que escribamos entre las barras: sed -i /sonidoInicio/d. Como, con el comando find hemos obtenido los nombres de los ficheros separados por un caracter null, a xargs le decimos que tomo los valores separados por el caracter null con xargs -0.

Be the first to comment

Por favor acceder para comentar.