Der Befehl xargs liest aus der Standardeingabe und führt einen Befehl für jedes bereitgestellte Argument aus. Jedes Argument muss durch Leerzeichen getrennt werden. Der Pipe-Operator wird verwendet, um die Ausgabe des ersten Befehls zur Eingabe für den zweiten Befehl zu machen. Der xargs-Befehl wird häufig zusammen mit dem find-Befehl verwendet, um mit jedem Ergebnis zu arbeiten, das in der Datei- oder Verzeichnissuche gefunden wird.
Syntax
Die allgemeine Syntax des xargs-Befehls lautet:
# command [options] [arguments] | xargs [options] {command}
Angenommen, Sie möchten alle Dateien im Verzeichnis /foo mit der Erweiterung .pdf löschen. Sie können xargs verwenden, um den Prozess zu automatisieren:
# find /foo -type f -name "*.pdf" | xargs rm
Der Befehl find sucht nach allen Dateien in /foo mit der Erweiterung .pdf und leitet das Ergebnis dann an den Befehl xargs weiter. Da die Ergebnisse durch ein Leerzeichen getrennt sind, führt der xargs-Befehl den rm-Befehl für jede Datei in den Ergebnissen aus und entfernt alle PDF-Dateien im Verzeichnis.
Der xargs-Befehl hat verschiedene Optionen, wie unten gezeigt:
Option | Beschreibung |
---|---|
-I {Ersatzzeichenfolge} | Betrachten Sie jede Zeile in der Standardeingabe als ein einzelnes Argument. |
-L {Anzahl der Zeilen} | Lesen Sie eine bestimmte Anzahl von Zeilen aus der Standardeingabe und verketten Sie sie zu einer langen Zeichenfolge. |
-p | Den Benutzer vor jedem Befehl auffordern. |
-n {Anzahl der Argumente} | Lesen Sie die maximale Anzahl von Argumenten aus der Standardeingabe und fügen Sie sie am Ende der Befehlsvorlage ein. |
-E {Ende der Zeichenfolge} | Repräsentiert das Ende der Standardeingabe. |
-t | Schreiben Sie jeden Befehl in die Standardfehlerausgabe, bevor Sie den Befehl ausführen. |
-s {maximale Größe} | Legen Sie die maximal zulässige Größe einer Argumentliste auf eine bestimmte Anzahl von Zeichen fest. |
xargs-Befehlsbeispiele
1. Führen Sie einen Befehl mit den Eingabedaten als Argumente aus:
# arguments_source | xargs command
2. Führen Sie mehrere verkettete Befehle für die Eingabedaten aus:
# arguments_source | xargs sh -c "command1 && command2 | command3"
3. Löschen Sie alle Dateien mit der Erweiterung `.backup` (`-print0` verwendet ein Nullzeichen, um Dateinamen aufzuteilen, und `-0` verwendet es als Trennzeichen):
# find . -name '*.backup' -print0 | xargs -0 rm -v
4. Führen Sie den Befehl einmal für jede Eingabezeile aus und ersetzen Sie alle Vorkommen des Platzhalters (hier als `_` gekennzeichnet) durch die Eingabezeile:
# arguments_source | xargs -I _ command _ optional_extra_arguments
5. parallele Läufe von bis zu "max-procs"-Prozessen gleichzeitig; der Standardwert ist 1. Wenn `max-procs` 0 ist, führt xargs so viele Prozesse wie möglich gleichzeitig aus:
# arguments_source | xargs -P max-procs command