UNIX – Ejemplo de uso del comando XARGS.-

El comando xargs nos permite construir y ejecutar comandos desde la entrada estándar, el uso de xargs es bien simple, y lo explicare con ejemplos…

Si por ejemplo quisiéramos buscar todos los ficheros .conf del directorio /etc que contengan la palabra root dentro de su contenido… podemos utilizar el comando find (Para buscar todos los ficheros de /etc que terminen en .conf), y luego con ese resultado utilizamos xarg en conjunto con grep (xarg lo utilizaremos para que ejecute el filtro grep con el resultado como entrada).

El comando seria el siguiente:

find /etc -iname "*.conf" | xargs grep "root"

Y veremos como resultado todos los ficheros con root en su contenido y la linea con la palabra a su lado.

En este ejemplo no hemos utilizado xargs con ninguna opcion, y para el siguiente ejemplo tampoco utilizaremos ninguna opcion para poder indentificar algunas diferencias importantes, por ejemplo si estamos en un directorio y queremos borrar todo su contenido (Normalmente podemos hacer esto con rm -rf *, pero es un ejemplo para que aprendamos como funciona xargs), hariamos lo siguiente:

ls | xargs rm -rf

Esto nos borraria todos los archivos de el directorio en el que estamos, y aunque no lo veamos el comando que se genero, poniendo de ejemplo que hay 5 archivos es el siguiente:

rm -rf archivo1 archivo2 archivo3 archivo4 archivo5

Con la opcion -n podemos especificar el numero de argumentos en una linea, por ejemplo:

ls | xargs -n1 rm -rf

Mostraria:

rm -rf archivo1 
rm -rf archivo2
rm -rf archivo3
rm -rf archivo4
rm -rf archivo5

Si ponemos -n2, mostraria:

rm -rf archivo1 archivo2
rm -rf archivo3 archivo 4
...

Ahora que sabemos como funciona el comando XARGS, podremos construir una serie de comandos, por ejemplo queremos que todos los ficheros del directorio /etc que terminen con .conf sean movidos a un directorio especifico (En este ejemplo /backup), utilizaremos xargs con la opcion -I, de la siguiente manera:

find /etc -iname "*.conf" | xargs -I ARG cp ARG /backup

Donde lo que escribamos delante de el primer ARG sera el primer argumento y lo que escribamos delante de el segundo ARG sera el tercer argumento, y el resultado del find seria el segundo, el comando anterior estaria haciendo lo siguiente:

cp /etc/prueba.conf /backup
cp /etc/prueba2.conf /backup

cp /etc/prueba3.conf /backup
cp /etc/prueba4.conf /backup
cp /etc/prueba5.conf /backup
cp /etc/prueba6.conf /backup
cp /etc/prueba7.conf /backup
...

De la misma forma se podria construir con el comando AWK de la siguiente forma :

find /etc -iname "*.conf" | awk '{ print "cp",$0,"/backup"}' | bash
Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

1 respuesta a UNIX – Ejemplo de uso del comando XARGS.-

  1. @klaus dijo:

    Una explicación perfecta, bien ilustarado, me ha servido de gran ayuda gracias.

Deja una respuesta

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