Skip to main content

Ejemplos de uso del comando "xargs"

Linux find | Ejemplos de como usar este practico comando (Abril 2025)

Linux find | Ejemplos de como usar este practico comando (Abril 2025)
Anonim

El comando xargs se usa normalmente en una línea de comandos donde la salida de un comando se pasa como argumentos de entrada a otro comando.

En muchos casos, no se necesita un comando especial como xargs para lograrlo, ya que los operadores de "canalización" y "redirección" realizan la misma transacción de tipo. Sin embargo, a veces hay problemas con el mecanismo básico de redirección y canalización, por ejemplo, si los argumentos contienen espacios, ese xargs supera.

Además, xargs ejecuta el comando especificado repetidamente, si es necesario, para procesar todos los argumentos que se le dan. De hecho, puede especificar cuántos argumentos deben leerse en el flujo de entrada estándar cada vez que xargs ejecuta el comando especificado.

En general, el comando xargs se debe usar si la salida de un comando se va a usar como parte de las opciones o argumentos de un segundo comando al que se transmiten los datos (utilizando el operador de tubería "|"). La canalización regular es suficiente si se pretende que los datos sean la entrada (estándar) del segundo comando.

Por ejemplo, si usa el comando ls para generar una lista de nombres de archivos y directorios, y luego canaliza esta lista en el comando xargs que ejecuta echo, puede especificar cuántos nombres de archivos o nombres de directorios se procesan por eco en cada iteración de la siguiente manera :

ls | xargs -n 5 echo

En este caso, echo recibe cinco nombres de archivos o directorios a la vez. Como echo agrega un carácter de nueva línea al final, se escriben cinco nombres en cada línea.

Si ejecuta un comando que devuelve un gran número de elementos impredecibles (por ejemplo, nombres de archivos) que se pasan a otro comando para su posterior procesamiento, es una buena idea controlar el número máximo de argumentos que recibe el segundo comando para evitar la sobrecarga y el bloqueo.

La siguiente línea de comando divide el flujo de nombres de archivos producidos al encontrar los grupos de 200 antes de pasar al comando cp, que los copia en el apoyo directorio.

encuentra ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

El elemento "./" en el comando de búsqueda especifica el directorio actual para la búsqueda. El argumento "-type f" restringe la búsqueda a archivos, y el indicador "-name" * .txt "filtra aún más cualquier cosa que no tenga una extensión" .txt ". -yo bandera en xargs señala que la {} notación representa cada nombre de archivo del vapor.

El siguiente comando busca archivos con el nombre de núcleo en o debajo del directorio / tmp y los elimina.

buscar / tmp -name core -type f -print | xargs / bin / rm -f

Tenga en cuenta que esto funcionará incorrectamente si hay algún nombre de archivo que contenga nuevas líneas, comillas simples o dobles o espacios. La siguiente versión procesa los nombres de los archivos de tal manera que los nombres de los archivos o directorios que contienen comillas simples o dobles, espacios o nuevas líneas se manejen correctamente.

encuentra / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

En vez de -yo opción también puede utilizar el -YO indicador que especifica la cadena que se reemplaza por la línea de entrada en los argumentos del comando como en este ejemplo:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

La cadena de reemplazo se define como "{}". Esto significa que cualquier aparición de "{}" en los argumentos del comando se reemplaza por el elemento de entrada reenviado a argumentos a través de la operación de canalización. Esto le permite colocar los elementos de entrada en posiciones específicas en los argumentos del comando a ejecutar (repetidamente).