Introducción
Ciertos comandos de Linux reciben entradas tanto de la entrada estándar (stdin) como de un argumento de la línea de comandos. Sin embargo, otros están diseñados para tomar entradas solo como un argumento. Para poder procesar la entrada estándar, esos comandos de Linux deben utilizar xargs
comando.
En este tutorial, aprenderá a usar los xargs
de Linux comando para manipular la entrada estándar y trabajar con otros comandos.
Requisitos previos
- Un sistema que ejecuta Linux
- Acceso a la línea de comando
¿Qué es el comando xargs?
Los xargs
command crea y ejecuta comandos proporcionados a través de la entrada estándar. Toma la entrada y la convierte en un argumento de comando para otro comando. Esta característica es particularmente útil en la administración de archivos, donde xargs
se usa en combinación con rm
, cp
, mkdir
y otros comandos similares.
Cómo usar el comando xargs con ejemplos
Cuando se usa solo, xargs
solicita al usuario que ingrese una cadena de texto que luego pasa al echo
comando.
El ejemplo muestra una entrada de ejemplo, seguida de la salida de echo
comando.
Combina xargs con find
El comando de búsqueda a menudo precede a xargs
en una tubería. Úselo para proporcionar una lista de archivos para su posterior procesamiento por parte de xargs
. La sintaxis se ve así:
find [location] -name "[search-term]" -type f | xargs [command]
El ejemplo anterior demuestra el uso de find
Comando para encontrar todos los archivos con .sh
extensión. Luego, la lista de archivos se canaliza a xargs
, que utiliza el rm
comando para borrarlos.
Sin embargo, xargs
no incluye automáticamente archivos que contienen espacios en blanco en sus nombres. Para incluir esos archivos también, use -print0
opción para find
y el -0
opción para xargs
:
find [location] -name "[search-term]" -type f -print0 | xargs -0 [command]
rm
ahora elimina todos los archivos con .sh
extensión.
Combina xargs con grep
Utilice xargs
con el comando grep para buscar una cadena en la lista de archivos proporcionada por find
comando.
find . -name '[search-term]' | xargs grep '[string-to-find-in-files]'
El ejemplo anterior buscó todos los archivos con .txt
extensión y los canalizó a xargs
, que luego ejecutó el grep
orden sobre ellos.
Comandos Múltiples Xargs
Para ejecutar más de un comando con xargs
, use el -I
opción. La sintaxis es:
[command-providing-input] | xargs -I % sh -c '[command-1] %; [command-2] %'
En el ejemplo, el contenido de file4.txt
se exhibieron primero. Entonces mkdir
creó una carpeta para cada palabra en el archivo.
Leer elementos del archivo
Como se mencionó antes, xargs
lee la entrada estándar. Usa el -a
opción para leer el contenido de un archivo en su lugar.
xargs -a [filename]
Buscar y archivar imágenes usando tar
Cuando se usa con el comando tar, xargs
crea un tar.gz
archivo y lo rellena con archivos proporcionados por find
comando.
find [location] -name "[search-term]" -type f -print0 | xargs -0 tar -cvzf [tar-gz-archive-name]
Comando de impresión
Para ver los comandos ejecutados por xargs
en la salida estándar, utilice -t
opción.
[command-providing-input] | xargs -t [command]
En el ejemplo anterior, observe que xargs
ejecutó el comando mkdir en toda la cadena proporcionada por echo
.
Aprobar la ejecución del comando xargs
Algunos xargs
las operaciones, como la eliminación de archivos y carpetas, son irreversibles. Para controlar la ejecución de esos comandos, use -p
opción.
[command-providing-input] | xargs -p [command]
Cuando ejecuta el comando con -p
opción, xargs
muestra una línea de confirmación antes de ejecutarlo. Escriba y
para continuar, o n
para cancelar la operación.
Límite de salida por línea
A veces es necesario controlar el número de argumentos xargs
toma al mismo tiempo. Realice esta acción usando -n
opción seguida de la cantidad de argumentos que está limitando xargs
a:
[command-providing-input] | xargs -n [number] [command]
En el siguiente ejemplo, xargs
toma la cadena del echo
comando y lo divide en tres. Luego ejecuta otro echo
para cada una de las partes:
Especifique el delimitador
Los xargs
predeterminados delimitador es un espacio en blanco. Para cambiar el delimitador predeterminado, use -d
comando seguido de un solo carácter o un carácter de escape como n
(una nueva línea).
[command-providing-input] | xargs -d [new-delimiter] | xargs [command]
En el siguiente ejemplo, xargs
El comando le indica al sistema que use *
como delimitador y aplicar mkdir
a cada uno de los argumentos obtenidos.
Lista de todas las cuentas de usuario de Linux en el sistema
Utilice xargs
para organizar la salida de los comandos, como cut
. Considere el siguiente ejemplo:
cut -d: -f1 < /etc/passwd | sort | xargs
El comando cortar accede al /etc/passwd
y utiliza el :
delimitador para cortar el comienzo de cada línea en el archivo. Luego, la salida se canaliza a sort
, que ordena las cadenas recibidas y, finalmente, a xargs
que los muestra:
Eliminar espacios en blanco en la cadena
Desde xargs
ignora los espacios en blanco cuando busca argumentos, el comando es útil para eliminar espacios en blanco innecesarios de las cadenas.
echo "[string-with-unnecessary-spaces]" | xargs
Lista de número de líneas/palabras/caracteres en cada archivo
Utilice xargs
con el comando wc para mostrar una lista de archivos con el número de líneas, palabras y caracteres.
ls | xargs wc
El siguiente ejemplo instruyó al comando ls para canalizar a xargs
sólo los archivos que contienen la palabra "ejemplo". xargs
luego aplicó wc
a esa lista:
Copiar archivo a varios directorios
Copie archivos a varios directorios usando xargs
dominio. La sintaxis es simple:
echo [directory-1] [directory-2] | xargs -n 1 cp -v [filename]
El echo
El comando proporciona nombres de directorio y xargs
usa el comando cp para copiar el archivo dado en cada uno de los directorios.