Ulrich Spoerlein <q(at)uni.de> wrote:
> On Tue, 11.01.2005 at 17:11:12 +0100, Oliver Fromme wrote:
> > > [kern.argmax laeuft ueber]
> > Ganz einfach:
> >
> > echo * | xargs rm
> >
> > und wech ist der Dreck. Geht ratz-fatz.
>
> Niemals,
Doch, immer. :-)
> * wird schliesslich von der Shell expandiert, und dann knallts.
Da echo ein Shell-builtin ist, wird exec*() gar nicht ver-
wendet, ergo spielt kern.argmax keine Rolle. Aus demselben
Grund kann man z.B. auch problemlos
for X in *; do rm $X; done
schreiben, da »for« selbstverständlich ebenfalls ein Shell-
builtin ist. Die Lösung mit echo|xargs ist allerdings er-
heblich schneller, da »rm« nicht für jede Datei einzeln
aufgerufen wird, sondern immer für mehrere Dateien auf ein-
mal.
> Du meintest wohl die uebliche find|xargs Kombo (siehe anderes Posting).
Nein. Mit »find« geht es i.allg. nur entweder unportabel
(-maxdepth 1) oder erheblich aufwendiger (mit grep o.ä.).
> Um doch noch was sinnvolles zu leisten:
> Hat jemand mal find -delete vs. find|xargs rm gebenchmarkt?
Ich habe es nicht gemessen, aber in der Theorie müßte »find
-delete« geringfügig schneller sein, da es unlink(2) selbst
ausführt und nicht rm(1) aufruft. Davon abgesehen ist es
sicherer, da es auch mit beliebig ungewöhnlichen Dateinamen
(Whitespace, Backslashes, Controls) funktioniert.
Andererseits ist »-delete« unportabel und kein Standard,
ebenso wie (leider) »print0« und die Option -0 bei xargs.
Manchmal sind Standards echt blöd.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. "Python tricks" is a tough one, cuz the language is so clean. E.g., C makes an art of confusing pointers with arrays and strings, which leads to lotsa neat pointer tricks; APL mistakes everything for an array, leading to neat one-liners; and Perl confuses everything period, making each line a joyous adventure <wink>. -- Tim Peters To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Wed 12 Jan 2005 - 10:49:09 CET