On Mon, 10 Mär 2003 at 11:49 (+0100), Sebastian Helms wrote:
Moin Andreas,
* Andreas Feile schrieb am 10 Mar 2003:
Sebastian Helms, Montag, 10. März 2003 09:40:
Die ` benutzt du, um einen Befehl (den innerhalb der `) auszuführen und dessen Ausgabe als Rückgabe bzw. als Wert zu erhalten, z.B. in VARIABLE=`pwd` (es gibt bessere Beispiele).
Wozu brauche ich denn dann sowas wie xargs? Wie ich soeben probiert habe ist
find / -name test | xargs rm
Weil es sein kann, daß find (oder ein anderes Programm) so viele Argumente zurückliefern, daß diese nicht alle über die Kommandozeile übergeben werden können.
Das ist aber gerade in Verbindung mit find kein Argument: find / -name test -exec rm {} \; xargs ist hier eher ein Mittel zum Schonen der Systemressourcen, weil im Gegensatz zum -exec nicht für jede gefundene Datei ein neuer Prozess gestartet wird.
Siehe auch man xargs ... *g*
gleichbedeutend mit
rm `find / -name test`
Wenn es nur ein paar Dateien sind, kannst du auch die zweite Variante nehmen.
Allerdings weiß ich nicht, wie das ist, wenn Sonderzeichen in den Dateinamen sind. Da bietet sich find -print0 | xargs -0 an.
Und das ist der 2. gute Grund zur Verwendung von xargs ;-) BTW: Diese *argument list too long* Fehler kann man auch mit Schleifen umgehen: statt: rm * geht dann: for i in *; do rm $i; done Jan