Anhängen einer Liste von Dateien an eine Datei mit dem Befehl xargs

Dieses Technikrezept erläutert, wie Sie den Befehl xargs in der Korn-Shell verwenden, um mit mehreren Dateien zu arbeiten. Die Anweisungen zeigen, wie Sie zehn Dateien in einer Datei kombinieren, ohne sie manuell mit folgenden Dateien zu kombinieren: cat file1> bigfile, cat file2 >> bigfile usw. Die Verwendung dieses Befehls ist sehr umfassend und sehr hilfreich. Mit dem Befehl xargs können Sie eine große Anzahl von Dateien bearbeiten. So können Sie beispielsweise sogar vermeiden, dass die Parameterliste zu lang ist, wenn Sie versuchen, mehr als 1024 Dateien zu erstellen.


Das folgende Tutorial enthält Anweisungen zur Verwendung eines grundlegenden Befehls ksh: xargs.

Wenn Sie mit AIX / Unix / ksh arbeiten, kann es vorkommen, dass Sie mehrere Prozeduren mit Dateien durchführen müssen. Dieses Tutorial zeigt, wie Sie eine Liste von Dateien mit zwei Befehlen an eine große Datei anhängen, anstatt sie manuell mit cat file1> bigfile, cat file2 >> bigfile usw. zu kombinieren.

Dateien / Verzeichnis
In meinem Beispiel nehme ich den Inhalt von fünf Dateien und füge sie zu einer großen Datei zusammen.

Meine Dateien sind: Datei1, Datei2, Datei3, Datei4, Datei5.
Die kombinierte Datei heißt bigfile.dat.

Ich habe auch alle Dateien im selben Verzeichnis. (/ usr / acct / test / files /)

Zuerst erstellen wir eine Liste der Dateien. Dies ist äußerst hilfreich, wenn Sie mit großen Dateien arbeiten (z. B. 1500).
Für mein Beispiel würde ich diesen Befehl eingeben:

ls | grep-datei> dateiliste

Der Befehl ls listet den Inhalt des Verzeichnisses auf. Dann suche ich nach einer Datei, die hat Datei in ihrem Namen und hängen die Ergebnisse an eine neue Datei namens Dateiliste.

Jetzt haben wir eine Liste der Dateien, die wir in einer bigfile.dat kombinieren möchten.
Um diese Dateien zu kombinieren, gebe ich Folgendes ein:

Katzen-Dateiliste | xargs cat >> bigfile.dat

Dieser Befehl fordert mich auf, die Liste der Dateien (Dateiliste) zu übernehmen. und dann für jede aufgeführte Datei den Inhalt an die Datei bigfile.dat anhängen.

Der Befehl xargs ist nützlich, wenn er mit pipe (|) kombiniert wird. Mit xargs können Sie mit einer großen Anzahl von Dateien in einer Liste oder in einem grep'd arbeiten.

____________________
ANMERKUNGEN:

Hier ist eine Beschreibung der Xargs Befehl, mit freundlicher Genehmigung unseres AIX / KornShell Reference Manual.

Beschreibung

Die generierte Befehlszeilenlänge ist die Summe der Größe des Befehls und aller als Zeichenfolgen behandelten Argumente in Bytes, einschließlich eines Null-Byte-Abschlusszeichens für jede dieser Zeichenfolgen. Der Befehl xargs begrenzt die Befehlszeilenlänge. Wenn die erstellte Befehlszeile ausgeführt wird, dürfen die kombinierten Argument- und Umgebungslisten nicht die Anzahl der ARG_MAX-Bytes überschreiten. Wenn Sie in dieser Einschränkung nicht die Flags -n oder -s angeben, ist die Standardlänge der Befehlszeile mindestens der von LINE_MAX angegebene Wert.

Hier einige Beispiele für die Verwendung des Befehls aus unserem Handbuch.

Um Dateinamen in die Mitte der Befehlszeilen einzufügen, geben Sie Folgendes ein:

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

Diese Befehlsfolge benennt alle Dateien im aktuellen Verzeichnis um, indem am Ende jedes Namens .old hinzugefügt wird. Das -I-Flag weist den Befehl xargs an, jede Zeile des ls-Verzeichnisses einzufügen, wobei {} (geschweifte Klammern) angezeigt wird. Wenn das aktuelle Verzeichnis die Dateien chap1, chap2 und chap3 enthält, werden die folgenden Befehle erstellt:
mv chap1 chap1.old
mv chap2 chap2.old
mv chap3 chap3.old

Hier ist ein anderes Beispiel:
Geben Sie Folgendes ein, um einen Befehl für Dateien zu verwenden, deren Namen in einer Datei aufgeführt sind:
Xargs-Fussel -a
Befehlsreferenz für AIX Version 4.3, Volume 6 gilt für AIX Version 4.3, 3270 Host Connection Program 2.1 und 1.3.3 und für Distributed SMIT 2.2 für AIX-Lizenzprogramme.