[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Mal wieder find...



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Andreas Schmidt wrote:
| irgendwie hab ich Probleme mit find. Wollte fuer eine Reihe DAteien
| chmod setzen.
|
| man find meint, dass man per "-exec command;" ein Kmmano ausfuehren
| lassen koenne. Habe gerade auch nochmal die Postings hier durchgesehen
| (in letzter Zeit gab es ja einige Fragen zu find), aber dort war nichts
| zu einer Aktion -exec zu finden; wurde alles nur mit -[print0|name] |
| xargs gemacht. Hat das einen besonderen Grund? Ist -exec nicht mehr
| ueblich?

Der Nachteil an -exec ist, daß für jede Datei, die find findet ein neuer Prozess
gestartet wird, und das kann extrem langsam sein.

Beispiel:

in /foo liegen bar001 - bar999

Ein find /foo -type f -exec chmod +w {} \; erzeugt folgende Prozesse:

1.) find
2. bis 1000.) chmod +w bar00X


Ein find /foo -type f -print 0 | xargs -0 chmod +w  erzeugt folgende Prozesse:
1.) find
2.) chmod +w bar001 bar002 bar003 bar004 ...
3.) chmod +w bar101 bar102 bar103 bar104 ...

Die Anzahl der Argumente, die chmod jeweils aufeinmal mitbekommt hängt von
Deinem System ab, läst sich aber über --max-args begrenzen.

Aufgepaßt: xargs übergibt die reingepipeten Argumente zunächst mal als letztes,
möchte man etwas wie find -exec sh -c "echo X{}X" \; machen, so geht das mit -i:

find /foo -type f -print0 | xargs -i sh -c "echo X{}X"

Alle Beispiele ungetestet, YMMV,

	-billy.


- --
Meisterbohne   Meisterbohne GbR, Küfner, Mekle, Meier   Tel: +49-731-399 499-0
~   eLösungen   Söflinger Straße 100                     Fax: +49-731-399 499-9
~               89077 Ulm                           http://www.meisterbohne.de/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFAMONL6twtlEPERx4RAlzbAJ9elT9mZvPQkXp1MVvaNP0McblYAQCgo3eF
f7+CkOAw09Mrag3lY6jamZE=
=CfRg
-----END PGP SIGNATURE-----



Reply to: