Hallo, Am Mit, 28 Feb 2007, Dr. Jürgen Vollmer schrieb:
Am Mittwoch, 28. Februar 2007 schrieb Joerg Thuemmler:
wenn nicht explizit anders angegeben, werden die Anweisungen mit _und_ verknüpft, im Klartext: die zweite Anweisung wird nur ausgeführt, wenn die erste ein true zurückgab. Und so die folgenden.
Wenn Du vorne "-print" hast, wird erst "-print" ausgeführt -und ist true, d.h. es wird angezeigt und gleichzeitig die nächste Anweisung ausgeführt... andersrum: wenn vorne -name "*.exe" steht werden nur die an die nächste Anweisung übergeben, die das erfüllen...
Genau. [..]
find ... -print -name "*.exe" | xargs cmd ==> alle gefundenen Namen werden an cmd übergeben, da xargs ja die Ausgabe (-print) erzeugt. -name liefert zwar für manche Dateien "false", aber das "juckt" xargs nicht
Genauer: es juckt das -print davor nicht, was also den Dateinamen ausgibt und der wird dann also per Pipe an xargs verfüttert. Das -name '*.exe' kann man in diesem Beispiel also komplett weglassen ;) Das ist analog zu: find ... [-true -and] -print(=true) -and -name '*.exe' -and -print | xargs
find ... -print -name "*.exe" -exec cmd {} \; ==> es werden wieder alle Dateien ausgegeben (-print) aber da -name für manche Dateien fehlschlägt, wird für diese Dateien -exec nicht mehr ausgeführt.
Genau. Klarer: das -exec wird nur für die Dateien ausgeführt, für die das -name true liefert.
Man lernt nie aus.
ACK! -dnh -- The duke had a mind that ticked like a clock and, like a clock, it regularly went cuckoo. -- (Terry Pratchett, Wyrd Sisters) -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org