
Hallo, Am Mit, 28 Feb 2007, Roman Fietze schrieb:
On Tuesday 27 February 2007 21:03:14 David Haller wrote:
Ist aber arg nervig zum eintippen... Je nach Datenlage ist ein
find ... -type f -print0 | tr '\n\0' '\0\n' \
| egrep -i '\.(exe|com|scr|dll|bat|cmd|pif)$' \ | tr '\n\0' '\0\n' | xargs -0 ls -b1
Und was haelst du von:
Teilweise viel, -[i]regex war mit komplett entfallen. Aber immerhin gibt's -[i]regex nicht überall (s.u.) *rausred* ;)
find ... -regextype posix-egrep \
$ find -regextype find: invalid predicate `-regextype' $ find --version GNU find version 4.1
-iregex '.*\.(exe|com|scr|dll|bat|cmd|pif)' \
'-[i]regex' geht nicht mit jedem find (aber immerhin auch mit älteren GNU finds bzw. AFAIK den verbreitetsten).
oder auch mit Emacs regexp:
find ... -iregex '.*\.\(exe\|com\|scr\|dll\|bat\|cmd\|pif\)' \
Das ist nicht emacs-Regex sondern "(POSIX) basic RE", das andere sind "(POSIX) Extended RE" (bzw. egrep REs, IIRC gibt's da geringe Abweichungen) ;)
-exec ls -b1 {} \+
Auch das '-exec .. {} +' geht nicht mit älteren GNU finds (wie meinem). Das ist ein erst vor relativ kurzem von den BSD-finds in GNU find übernommenes Feature; im 97er POSIX ist es noch nicht drin, im aktuellen IIRC schon. Wenn es vorhanden ist, ist "-exec ... +" die empfehlenswerte Variante (bzw. besser noch, "-execdir .. +"). Bei älteren GNU finds / GNU xargs ist -iregex '.*\.\(exe\|com\|scr\|dll\|bat\|cmd\|pif\)' \ -print0 | xargs -0 ... das Mittel der Wahl. Nicht standardisiert, aber halbwegs portabel und ebenfalls ausreichend sicher ist: find .... -iname '*.exe' -o -iname ... -exec {} \; aber das war ja der Ausgangspunkt ;) Ansonsten läuft find ... -iregex '...' -exec ... {} + noch auf den meisten Plattformen. Das ganze ist ein ziemlich leidiges Thema (und taucht wohl häufiger in de.comp.os.unix.shell auf -- und auch hier). HTH, -dnh -- Tower to pilot: "Air traffic 3 o'clock!" Pilot to tower:" Give us another hint, we have digital watches..." -- 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