Cómo usar Xargs en Linux

Cómo usar Xargs en Linux
Xargs es una herramienta de línea de comandos. Si desea redirigir la salida de un comando como argumento de otro comando, entonces Xargs es la herramienta para usted. Es una herramienta muy útil para hacer fácilmente muchas cosas en la línea de comando. En este artículo, te mostraré cómo usar Xargs en Linux. Entonces empecemos.

Cómo funciona Xargs:

El formato en el que usa el comando xargs es:

$ Command1 | comando xargs2

También puede modificar el comportamiento de XARGS con algunas opciones. En ese caso, el formato del comando XARGS será:

$ Command1 | comando xargs [opciones]

Aquí, la salida del comando1 se utilizará como el argumento de comando2. La salida de comando1 se divide en muchos argumentos por Xargs dependiendo de un personaje llamado delimitador. Entonces, Xargs ejecuta el comando comando2 para cada uno de estos argumentos y ese argumento se pasa como el argumento del comando comando2.

Por ejemplo, digamos, la salida de comando1 es como sigue:

valor1 valor2 valor3

Digamos que el personaje delimitador es espacio. Ahora, la salida de comando1 se dividirá en 3 argumentos, valor1, valor2, y valor3.

Ahora, Xargs ejecuta el comando comando2 para cada uno de los 3 argumentos una vez.

$ comando2 valor1
$ comando2 valor2
$ comando2 valor3

Aquí, valor1, valor2, y valor3 ¿Están los argumentos analizados por XARGS desde la salida del comando comando1.

Puede lograr el mismo efecto usando bucles en un script de shell. Pero Xargs es una forma más fácil de hacer las cosas sin bucles, especialmente en la línea de comandos.

Por defecto, el delimitador de XARGS es el carácter de Newline/Space. Pero puedes cambiar el carácter delimitador con el -d o -delimitador opción de xargs.

Por defecto, XARGS funciona con un argumento a la vez. Si quieres ejecutar el comando comando2 con múltiples argumentos de la salida del comando comando1, Entonces puedes usar el -norte o -max-args opción de xargs. A veces, tendrá que decirle a Xargs específicamente que trabaje con un argumento a la vez con el -norte o -max-args opción.

También puede agregar o prepender otras cadenas a los argumentos pasados ​​al comando comando2 utilizando el -I opción de xargs.

Hay muchas otras opciones de XARGS, pero estas 3 son las más importantes y útiles. Entonces, solo cubriré estos 3 argumentos de Xargs en este artículo.

Eso es suficiente enlaza. Pasemos por algunos ejemplos.

Ejemplo 1: Creación y eliminación de archivos enumerados en un archivo de texto

Digamos que tiene una lista de nombres de archivo en un archivo de texto archivos.TXT.

Puede ver el contenido del archivo de texto archivos.TXT Como se muestra en la captura de pantalla a continuación.

$ archivos CAT.TXT

Ahora, puede crear todos los archivos enumerados en el archivos.TXT archivo de texto utilizando el tocar ordenar con Xargs como sigue:

$ archivos CAT.txt | Touch de Xargs

Como puede ver, los archivos se crean como se enumeran en el archivos.TXT.

Ahora, digamos, desea eliminar los archivos que se enumeran en el archivos.TXT Archivo de texto. Puedes usar el RM ordenar con Xargs como sigue:

$ archivos CAT.txt | xargs rm -v

Solo los archivos enumerados en el archivos.TXT El archivo se elimina como puede ver en la captura de pantalla a continuación.

Este es un ejemplo muy simple de xargs.

Ejemplo 2: redirige stdout a comandos que no admiten tuberías

Puede redirigir el stdout de un comando comando1 Como el stdin de otro comando comando2 if comando comando2 Admite tubería de Linux. Pero si el comando no admite tubería, no podrá hacerlo.

Por ejemplo, el eco El comando no admite tubería. Entonces, el siguiente comando no imprimirá nada como pueda ver en la captura de pantalla a continuación.

$ Fecha | eco

El comando xargs puede ayudarlo a redirigir el stdout de comando1 (en este caso fecha) al stdin de comando2 (en este caso eco) Como puede ver en la captura de pantalla a continuación.

$ Fecha | Xargs Echo

Ejemplo 3: Cambiar delimitador de xargs

Aquí, he imprimido una cadena 123-456-7890 (un número de teléfono ficticio) usando xargs. Como puede ver, toda la salida se trata como un solo argumento y Xargs ejecuta el eco comandar solo una vez.

$ Echo -N 123-456-7890 | Xargs Echo

Aquí he cambiado el delimitador a - utilizando el -d opción de xargs. Como puede ver, la salida 123-456-7890 ahora se trata como 3 argumentos diferentes 123, 456, y 7890.

$ Echo -n "123-456-789" | xargs -n 1 -d -eco

Ejemplo 4: Añadir o prepender argumentos de Xargs

Puede agregar (agregar al final del argumento) o prepender (agregar al frente del argumento) cadena al argumento pasado al comando comando2 Usando xargs. Antes de mostrarte cómo hacer esto, te mostraré cómo usar el -I opción de xargs.

El -I La opción de XARGS le permite definir un símbolo para el argumento XARGS que se pasa al comando comando2. Funciona como una variable.

Por ejemplo,

$ Echo -n "123-456-789" | xargs -d --n 1 -i echo

Aquí, -i opción define Como el símbolo del argumento en el que Xargs está trabajando actualmente. Una vez el símbolo se define, el símbolo se puede usar para pasar el argumento al comando comando2, Que (el símbolo ) será reemplazado por el valor del argumento.

Ahora, para agregar la cadena .TXT (Digamos) a cada argumento, puede usar Xargs de la siguiente manera:

$ Echo -n "123-456-789" | xargs -d --n 1 -i echo .TXT

De la misma manera, puedes prepender la cadena Hola (Digamos) a cada argumento de la siguiente manera:

$ Echo -n "123-456-789" | xargs -d --n 1 -i echo "hola "

Ejemplo 5: Cambio de extensiones de archivos específicos

Este es un poco complicado. Pero explicaré cómo funciona. No te preocupes.

Digamos que tiene algunos archivos en su directorio de trabajo actual con diferentes extensiones de archivos. Ahora, quieres cambiarlos todos a png extensión.

Puede cambiar la extensión del archivo de todos los archivos en su directorio de trabajo actual a PNG con XARGS de la siguiente manera:

$ ls | xargs -i bash -c 'file = && mv -v $ file $ file %%.*.png '

Como puede ver, toda la extensión del archivo ha cambiado a PNG.

Aquí, Xargs comienza un Sub Shell de Bash y ejecuta el comando Bash

File = && mv -v $ file $ archivo %%.*.png

Primero, Archivo = Asigna el símbolo valor, que es el nombre de archivo (el valor de argumento de xargs) al ARCHIVO variable de shell.

Entonces, MV El comando se usa para cambiar la extensión del archivo.

El $ Archivo La variable de shell contiene el nombre de archivo original.

$ Archivo %%.* Elimina la extensión del nombre de archivo (incluido . personaje) y luego .png la cadena se adjunta al nombre de archivo despojado.

Xargs puede hacer cosas mucho más complejas. Sigue probando cosas nuevas con xargs. El cielo es tu límite.

Si necesita ayuda en XARGS, puede consultar la página del hombre de XARGS de la siguiente manera:

$ hombre xargs

Entonces, así es como usas xargs en Linux. Gracias por leer este artículo.