Ajout d'une liste de fichiers à un fichier à l'aide de la commande xargs

Cette recette technique explique comment utiliser la commande xargs dans le shell Korn pour travailler avec plusieurs fichiers. Les instructions montreront comment combiner dix fichiers en un seul, sans les combiner manuellement à l'aide de: cat file1> bigfile, cat file2 >> bigfile, etc. Les utilisations de cette commande sont étendues et très utiles. L'utilisation de la commande xargs est un moyen efficace de travailler avec de grandes quantités de fichiers. Par exemple, cela peut même vous aider à éviter le message «la liste de paramètres est trop longue» lorsque vous essayez de grep plus de 1024 fichiers.


Le didacticiel suivant contient des instructions pour l’utilisation d’une commande ksh de base: xargs.

Si vous travaillez avec AIX / Unix / ksh, vous devrez probablement exécuter plusieurs procédures avec des fichiers. Ce tutoriel montrera comment ajouter une liste de fichiers à un fichier volumineux à l'aide de deux commandes, par opposition à leur combinaison manuelle à l'aide de cat file1> bigfile, cat file2 >> bigfile, etc.

Fichiers / Répertoire
Dans mon exemple, je vais prendre le contenu de cinq fichiers et les combiner en un seul gros fichier.

Mes fichiers sont: fichier1, fichier2, fichier3, fichier4, fichier5.
Le fichier combiné s'appellera bigfile.dat.

De plus, j'ai tous les fichiers dans le même répertoire. (/ usr / acct / test / files /)

Tout d'abord, nous allons créer une liste des fichiers. Ceci est extrêmement utile lorsque vous travaillez avec des fichiers de grandes quantités (1500, par exemple).
Pour mon exemple, je taperais cette commande:

ls | fichier grep> liste de fichiers

La commande ls listera le contenu du répertoire. Ensuite, je recherche tout fichier contenant fichier en son nom et annexer les résultats à un nouveau fichier appelé liste de fichiers.

Nous avons maintenant une liste des fichiers que nous voulons combiner en un seul fichier bigfile.dat.
Pour combiner ces fichiers, je vais taper ce qui suit:

liste de chat | xargs cat >> bigfile.dat

Cette commande me dit de prendre la liste des fichiers (filelist); puis, pour chaque fichier répertorié, ajoutez le contenu au fichier bigfile.dat.

La commande xargs est utile lorsqu'elle est combinée avec un tuyau (|). xargs vous permettra de travailler avec un grand nombre de fichiers dans une liste ou un grep'd.

____________________
REMARQUES:

Voici une description de la Xargs Cette commande est une gracieuseté de notre manuel de référence AIX / KornShell.

La description

La longueur de ligne de commande générée est la somme de la taille, en octets, de la commande et de chaque argument traité en tant que chaîne, y compris un terminateur nul en octets pour chacune de ces chaînes. La commande xargs limite la longueur de la ligne de commande. Lorsque la ligne de commande construite est exécutée, les listes d'arguments et d'environnements combinées ne peuvent pas dépasser ARG_MAX octets. Dans cette contrainte, si vous ne spécifiez pas les indicateurs -n ou -s, la longueur de ligne de commande par défaut est au moins égale à la valeur spécifiée par LINE_MAX.

Voici quelques exemples d'utilisation de la commande de notre manuel.

Pour insérer des noms de fichier au milieu des lignes de commande, entrez les éléments suivants:

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

Cette séquence de commandes renomme tous les fichiers du répertoire en cours en ajoutant .old à la fin de chaque nom. L'option -I indique à la commande xargs d'insérer chaque ligne de la liste de répertoires ls où {} (accolades) apparaît. Si le répertoire en cours contient les fichiers chap1, chap2 et chap3, cela construit les commandes suivantes:
mv chap1 chap1.old
mv chap2 chap2.old
mv chap3 chap3.old

Voici un autre exemple:
Pour utiliser une commande sur des fichiers dont les noms sont répertoriés dans un fichier, entrez les éléments suivants:
xargs lint -a
Le volume 6 du Manuel de référence des commandes AIX version 4.3 s’applique aux programmes sous licence 2.1 et 1.3.3 pour la connexion à l’hôte 3270 pour AIX et aux programmes distribués sous licence SMIT 2.2 pour AIX,