Linux Commands · 7 min read · Sep 20, 2025
8 Ejemplos Prácticos del Comando Xargs de Linux para Principiantes

El comando de Linux xargs puede no ser una herramienta de línea de comandos muy popular, pero eso no cambia el hecho de que es extremadamente útil, especialmente en combinación con otros comandos como find y grep. Si aún no conoces xargs y quieres entender su uso, te alegrará saber que vamos a hacer precisamente eso aquí.
Antes de continuar, ten en cuenta que todos los ejemplos presentados en este tutorial han sido probados en Ubuntu 22.04 LTS. La shell utilizada en mi sistema es Bash.1. ¿Cómo funciona el comando Xargs?
Bueno, antes de saltar a su uso, es importante entender qué es exactamente lo que hace Xargs. En términos simples, la herramienta - en su forma más básica - lee datos de la entrada estándar (stdin) y ejecuta el comando (suministrado como un argumento) una o más veces según la entrada leída. Cualquier espacio en blanco y espacios en la entrada se tratan como delimitadores, mientras que las líneas en blanco se ignoran.
Si no se suministra ningún comando como argumento a xargs, el comando predeterminado que la herramienta ejecuta es echo. Por ejemplo, en el siguiente ejemplo, simplemente ejecuté ‘xargs’ e ingresé ‘Hello World’ en stdin. Al presionar Ctrl+D (para decirle a xargs que hemos terminado con la entrada), el comando echo se ejecutó automáticamente y ‘Hello World’ se imprimió nuevamente.
2. ¿Cómo usar xargs con otro comando?
Mientras que echo es el comando predeterminado que xargs ejecuta, puedes especificar explícitamente cualquier otro comando. Por ejemplo, puedes pasar el comando find junto con su opción ‘-name’ como un argumento a xargs, y luego pasar el nombre del archivo (o tipo de archivos) que deseas encontrar como entrada a través de stdin.
Aquí está el comando completo en cuestión:
xargs find -namePor ejemplo, proporcionamos “.txt” como entrada a través de stdin, lo que significa que queremos que el comando find* busque todos los archivos .txt en el directorio actual (así como en sus subdirectorios).
Aquí está el comando en acción:
3. ¿Cómo hacer que xargs ejecute un comando múltiples veces (una vez por cada línea/argumento de entrada)?
En el ejemplo que discutimos en la sección anterior, queríamos buscar archivos .txt, así que proporcionamos “*.txt” en la entrada. Pero, ¿qué pasa si el requisito es también buscar otros tipos de archivos, como .log y .tmp?
Intenta dar estos como entrada a xargs después de “*.txt” y ve qué sucede. Bueno, deberías obtener un error similar al siguiente:
Eso es porque xargs pasa “.txt” y “.log” como entrada de nombre de archivo al comando find y luego find falla ya que se ejecuta con dos nombres de archivo en la entrada. Puedes pensar en el comando find ejecutándose de la siguiente manera:
find -name "*.txt" "*.log"Y no es la forma correcta.
Lo que queremos es que el comando xargs primero pase “.txt” al comando find, para que find nos dé resultados relacionados con archivos .txt, y luego se pase “.log”. Esto se puede hacer utilizando la opción de línea de comandos -L que xargs proporciona.
La opción de línea de comandos -L requiere un número que trata como el número máximo de líneas no en blanco que deben pasarse como entrada al comando en un solo momento. Así que, en nuestro caso, ese valor será 1, ya que queremos que se pase una línea de entrada como entrada a find a la vez.
Así que aquí está el comando que deberíamos ejecutar:
xargs -L 1 find -nameLa siguiente captura de pantalla muestra el comando mencionado en acción:

Hasta ahora, todo bien. Pero, ¿qué pasa si pasas la entrada de la siguiente manera:
"*.txt" "*.log"Bueno, el comando fallará porque ‘-L 1’ se asegurará de que la línea completa se pase al comando find.
En situaciones como estas, puedes usar la opción de línea de comandos ‘-n’.
La opción de línea de comandos ‘-n’, al igual que ‘-L’, requiere un número que representará el número de argumentos que deseas que xargs pase por línea de comando. En el caso que acabamos de discutir, “.txt” y “.log” deberían ser diferentes argumentos, y dado que queremos que se pasen individualmente, tendremos que proporcionar ‘1’ como valor a ‘-n’.
xargs -n 1 find -name

Así que estas son las formas en que podemos hacer que xargs ejecute un comando múltiples veces.
4. ¿Cómo hacer que xargs maneje nombres de archivos con espacios?
Si recuerdas, al principio mencionamos que xargs trata los espacios en blanco (así como los caracteres de nueva línea) como delimitadores. Esto puede causar problemas en casos en los que los nombres de archivo que se pasan como entrada a xargs contienen espacios.
Por ejemplo, supongamos que el directorio actual contiene un archivo llamado ‘new music.mp3’, y deseas que xargs pase este nombre a mplayer para que este último pueda reproducir el archivo. Si sigues el método convencional, obtendrás un error:

Eso es porque, debido al espacio entre ‘new’ y ‘music.mp3’, estos se tratan como dos archivos diferentes por mplayer. Una forma de resolver este problema es usar una barra invertida al proporcionar la entrada:
new\ music.mp3La otra forma es cambiar el delimitador, lo que puedes hacer utilizando la opción -d. Por ejemplo, puedes pedirle a xargs que solo considere la nueva línea como un delimitador, algo que se puede hacer de la siguiente manera:
xargs -d '\n' mplayer
5. ¿Cómo hacer que xargs maneje nombres de archivos con caracteres de nueva línea?
Así que, ahora sabemos cómo podemos hacer que xargs maneje nombres de archivos que contienen espacios en blanco. Pero, ¿qué pasa con las nuevas líneas? Sí, los nombres de archivo también pueden tener caracteres de nueva línea. Por ejemplo, hay un archivo llamado ‘foo’[nueva línea]’file.txt’. En la terminal, el nombre se muestra como ‘foo?file.txt’.
Ahora, supongamos que quiero que el comando find encuentre todos los archivos con nombres que comienzan con el texto ‘foo’, y luego use xargs para abrir estos archivos en gedit. Aquí está el comando:
find . -name "foo*" | xargs geditDesafortunadamente, el comando no logra alcanzar su propósito ya que se abre un nuevo archivo con el nombre ‘foo’ en Gedit. Eso es probablemente porque el carácter de nueva línea se trata como un delimitador por xargs.
Para resolver este problema, usa la opción -print0 que find ofrece y combínala con la opción -0 de xargs. Aquí está cómo la página del manual de find explica esta opción:
-print0
Verdadero; imprime el nombre completo del archivo en la salida estándar, seguido de un carácter nulo (en lugar del carácter de nueva línea que -print usa). Esto permite que los nombres de archivo que contienen nuevas líneas u otros tipos de espacios en blanco sean interpretados correctamente por programas que procesan la salida de find. Esta opción corresponde a la opción -0 de xargs.Así que aquí está el comando que deberíamos estar usando:
find . -name "foo*" -print0 | xargs -0 gedit6. ¿Cómo encontrar archivos que contengan un texto específico?
El comando xargs es realmente útil si deseas buscar archivos que contengan un texto/cadena específica. Por ejemplo, si deseas encontrar archivos .txt que contengan el texto ‘abc’, esto se puede hacer de la siguiente manera:
find -name "*.txt" | xargs grep "abc"Aquí está el comando en acción:
Como es bastante obvio, en este caso, el comando xargs obtiene su entrada del comando find.
7. ¿Cómo hacer que xargs acepte entrada de un archivo?
Hasta ahora, hemos visto a xargs aceptar entrada de stdin (que es el comportamiento predeterminado) así como de otro comando (discutido en la última sección). Sin embargo, si lo deseas, también puedes hacer que xargs acepte entrada de un archivo.
La opción -a del comando te permite hacer esto. Esta opción espera un nombre de archivo - este sería el archivo del cual xargs leerá la entrada.
Por ejemplo, supongamos que hay un archivo llamado ‘input.txt’. Contiene la entrada para xargs (básicamente, los contenidos son dos nombres de archivo: testfile1.txt y testfile2.txt). Aquí está cómo se puede usar xargs para leer la entrada de este archivo y pasarla a otro comando, digamos ls.
xargs -a input.txt ls -lartAquí está el comando en acción:
8. ¿Cómo hacer que xargs solicite permiso al usuario antes de ejecutar un comando?
Ya hemos discutido cómo puedes hacer que xargs ejecute un comando múltiples veces (ver punto 3 arriba). Pero, ¿qué pasa si deseas que xargs te pida permiso cada vez que ejecute el comando? ¿Es esto posible? Sí, lo es - la opción de línea de comandos -p lo hace posible.
Aquí hay un ejemplo de cómo puedes ejecutar xargs en un modo interactivo:
Solo hemos arañado la superficie aquí, ya que hay muchas otras características que el comando xargs proporciona en forma de opciones de línea de comandos. Intenta los conceptos/características de xargs que hemos explicado en este tutorial, y en caso de cualquier duda o consulta, revisa su página de manual.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.