xargs liest Argumente von der Standard-Eingabe und übergibt sie einem Befehl. Es ist die Brücke zwischen Pipes, die Text liefern (find, grep, ls), und Befehlen, die Argumente erwarten (rm, cp, wc) — unverzichtbar für effiziente Shell-Skripte.
Grundlagen
find . -name "*.tmp" | xargs rm # gefundene Dateien löschen
ls *.txt | xargs wc -l # Zeilen aller Textdateien zählen
echo "a b c" | xargs echo # Standard: echo mit allen Argumenten
Wichtige Optionen
find . -name "*.log" | xargs -n 1 wc -l # -n: max. Argumente pro Aufruf
find . -print0 | xargs -0 rm # -0: Null-getrennt, sicher bei Leerzeichen
find . -name "*.jpg" | xargs -I {} cp {} /backup/ # -I: Platzhalter pro Argument
find . -type f | xargs -P 4 gzip # -P: parallel mit 4 Prozessen
Typische Praxis
cat urls.txt | xargs -n 1 curl -O # jede URL einzeln laden
grep -l "ERROR" *.log | xargs -I {} cp {} /tmp/fehler/
seq 1 100 | xargs -I {} echo "Nummer {}"
Praxis-Tipps
- Dateinamen mit Leerzeichen:
-print0bei find und-0bei xargs verwenden — sonst wird der Name in mehrere Argumente zerlegt. - Ohne Befehl gibt xargs die Argumente einfach aus — gut zum Testen.
- Mit
-pfragt xargs vor jedem Aufruf nach, mit-tzeigt es jeden Befehl an — beides hilft beim Debuggen. - Sehr lange Argumentlisten packt xargs automatisch in mehrere Aufrufe; mit
-nlässt sich die Stückelung steuern.
Verwandte Grundlagen: find-Befehle, Bash-Befehle und grep-Befehle.