Comando XARGS en Linux con ejemplos útiles

Comando XARGS en Linux con ejemplos útiles

XARGS es un comando de Linux/Unix potente para construir y ejecutar líneas de comando a partir de la entrada estándar. Toma la salida de un comando y pasarlo como argumento de otro comando. XARGS toma la entrada estándar, delimitada por espacios en blanco o nuevas líneas, y ejecuta el comando una o más veces con cualquier argumento seguido de elementos. Se ignoran las líneas en blanco en la entrada estándar.

Sintaxis

xargs [opción] ... comando [inicial-args] .. 

Aquí el comando se ejecuta con argumentos args iniciales y más argumentos leídos de la entrada.

Opciones de comando XARGS

Los comandos XARGS proporcionan un número limitado de argumentos de línea de comandos pero lo suficiente como para utilizar sus características.

  • -0, -nulo - Los elementos están separados por un espacio nulo, no blanco
  • -a, --arg-archivo = archivo - Leer argumentos del archivo, no la entrada estándar.
  • -D, - -Delimiter = carácter - Los elementos en la secuencia de entrada están separados por carácter, no en blanco
  • -E Fin - Establecer una cadena como EOF de inicio de sesión. Si la cadena encontrada, el resto será ignorado.
  • -L, --max-linines = max-linines - Especificar el número máximo de líneas (no blank) para tomar como entrada en la línea de comando
  • -n, --max-args = max-args - Especificar argumentos máximos por línea de comando
  • -P, --max-procs = max-procs - Especificar procesos máximos para ejecutarse a la vez
  • -P, -Interactivo - Ejecutar procesos interactivos con el indicador antes de ejecutar comandos
  • -R,--No-Run-if-Epty - No ejecute el comando si los argumentos de entrada están vacíos.
  • -t, --verbose - Imprima todos los comandos en la pantalla ejecutándolos

Ejemplos de comando de Xargs

Ejemplo 1. Copiar una gran cantidad de archivos a otra carpeta.

Algunas veces debemos copiar una larga lista de archivos, en ese caso el comando CP falló con un error "Lista de argumentos demasiado tiempo". Podemos usar Xargs para hacer esa tarea.

find / backup / -type f | xargs -n1 -i cp /var/www/backup/  
Ejemplo 2: eliminar múltiples archivos de una carpeta.

Algunas veces requerimos eliminar una gran cantidad de archivos de una carpeta. El siguiente ejemplo eliminará todo .Archivos de registro desde el directorio /var /log.

encontrar/var/www/tmp/-type f | XARGS RM -F  

El comando anterior no pudo eliminar archivos con espacios en nombre. Para manejar espacios en el comando xargs, intente a continuación.

encontrar/var/www/tmp/-type f -print0 | xargs -0 rm -f  
Ejemplo 3: Cuenta el número de líneas en múltiples archivos.

El siguiente ejemplo contará el número de líneas para cada .directorio de archivo txt en /opt y su subdirectorio

encontrar /opt -name "*.txt "| xargs wc -l  

Para manejar archivos que tienen espacios en el nombre, use el siguiente comando.

encontrar / opt / -name "*.log "-print0 | xargs -0 wc -l  
Ejemplo 4: Haga una copia de seguridad de todos los archivos de configuración.

Si desea hacer una copia de seguridad de todos los archivos de configuración (extensión .conf) En su sistema, use el siguiente comando.

encontrar / -name "*.conf "| xargs tar czf config.alquitrán.GZ  
configuración LS -L.alquitrán.GZ  -RW-R-R--. 1 raíz de la raíz 193310 1 de abril 13:26 Configuración.alquitrán.GZ 
Ejemplo 5. Use el delimeter del custome con XARGS.

También podemos haber usado deliméter personalizado con el comando xargs, de forma predeterminada usa espacio y nueva línea como delimeter. Usar el parámetro -d para definir delimeter.

Echo "1,2,3,4,5" | xargs -d, eco  

Producción:

1 2 3 4 5 
Ejemplo 6: Mostrar salida en la línea sePreate con xargs.

En el ejemplo 5 se muestra en una sola línea, también podemos especificar para mostrar cada salida en línea seas.

Echo "1,2,3,4,5" | xargs -d, -l 1 eco  

Producción:

1 2 3 4 5 
Ejemplo 7: Manejo de espacio en blanco en nombres de archivo o ruta.

Para manejar los espacios en los nombres, use -Print0 con el comando Buscar y -0 con el comando xargs como parámetro.

encontrar /tmp -print0 | Xargs -0 -l 1 Echo