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.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.