Anexar una lista de archivos a un archivo usando el comando xargs

Esta receta técnica explica cómo usar el comando xargs en el shell Korn para trabajar con múltiples archivos. Las instrucciones le mostrarán cómo combinar diez archivos en un solo archivo, sin combinarlos manualmente usando un: cat file1> bigfile, cat file2 >> bigfile, etc. Los usos de este comando son amplios y muy útiles. El uso del comando xargs es una forma efectiva de trabajar con grandes cantidades de archivos. Por ejemplo, incluso puede ayudarlo a evitar el mensaje de "la lista de parámetros es demasiado larga" al intentar grep más de 1024 archivos.


El siguiente tutorial contiene instrucciones para el uso de un comando ksh básico: xargs.

Si trabaja con AIX / Unix / ksh, lo más probable es que haya ocasiones en las que necesite realizar varios procedimientos con archivos. Este tutorial le mostrará cómo agregar una lista de archivos a un archivo grande usando dos comandos, en lugar de combinarlos manualmente usando cat file1> bigfile, cat file2 >> bigfile, etc.

Archivos / Directorio
En mi ejemplo, voy a tomar el contenido de cinco archivos y combinarlos en un archivo grande.

Mis archivos son: archivo1, archivo2, archivo3, archivo4, archivo5.
El archivo combinado se llamará bigfile.dat.

Además, tengo todos los archivos en el mismo directorio. (/ usr / acct / test / files /)

Primero, crearemos una lista de los archivos. Esto es extremadamente útil cuando se trabaja con archivos de grandes cantidades (1500, por ejemplo).
Para mi ejemplo, me gustaría escribir este comando:

ls | archivo grep> lista de archivos

El comando ls listará el contenido del directorio. Entonces busco cualquier archivo que tenga expediente en su nombre y agregue los resultados a un nuevo archivo llamado lista de archivos.

Ahora, tenemos una lista de los archivos que queremos combinar en un bigfile.dat.
Para combinar estos archivos, escribiré lo siguiente:

lista de archivos gato gato xargs >> bigfile.dat

Este comando me dice que tome la lista de archivos (lista de archivos); y luego, para cada archivo listado, agregue el contenido al archivo bigfile.dat.

El comando xargs es útil cuando se combina con pipe (|). xargs te permitirá trabajar con una gran cantidad de archivos en una lista o grep.

____________________
NOTAS:

Aquí hay una descripción de la xargs comando, cortesía de nuestro Manual de referencia de AIX / KornShell.

Descripción

La longitud de línea de comando generada es la suma del tamaño, en bytes, del comando y cada argumento tratado como cadenas, incluido un terminador de byte nulo para cada una de estas cadenas. El comando xargs limita la longitud de la línea de comando. Cuando se ejecuta la línea de comando construida, las listas de Argumento y entorno combinadas no pueden exceder los bytes ARG_MAX. Dentro de esta restricción, si no especifica los distintivos -n o -s, la longitud de línea de comando predeterminada es al menos el valor especificado por LINE_MAX.

Aquí hay algunos ejemplos de cómo usar el comando de nuestro manual.

Para insertar nombres de archivos en la mitad de las líneas de comando, ingrese lo siguiente:

ls | xargs -t -I {} mv {} {} .old

Esta secuencia de comandos cambia el nombre de todos los archivos en el directorio actual agregando .old al final de cada nombre. El indicador -I le dice al comando xargs que inserte cada línea de la lista del directorio ls donde aparecen {} (llaves). Si el directorio actual contiene los archivos chap1, chap2 y chap3, esto construye los siguientes comandos:
mv chap1 chap1.old
mv chap2 chap2.old
mv chap3 chap3.old

Aquí hay otro ejemplo:
Para usar un comando en archivos cuyos nombres se enumeran en un archivo, ingrese lo siguiente:
xargs lint -a
Referencia de comandos de AIX versión 4.3, el volumen 6 se aplica a AIX versión 4.3, 3270 Host Connection Program 2.1 y 1.3.3 para AIX y Distributed SMIT 2.2 para programas con licencia de AIX,