On Tuesday 22 August 2006 16:39, Juergen Christoffel wrote: > On Tue, Aug 22, 2006 at 10:06:36AM +0200, Gebhard Dettmar wrote: > > Aber ich kapiere find -regex eh nicht so ganz. Ich habe Dateien wie > > geb.jpg, gebI.jpg, gebII.jpg usw. find -regex "geb.*" matcht die > > nicht, da muss noch ein ".*" davor, also ".*geb.*" Nehme an, das liegt > > daran, dass find bei der Ausgabe immer noch ein ./ vor Dateien, die im > > Aufrufverzeichnis liegen, stellt. > > Jein. find gibt ein "./" nur dann aus, wenn Du sagst "find . -op" oder > "find -op" ohne Directories. Wenn Du "find *" sagst, gibt's kein "./" > davor, aber Du findest trotzdem nicht unbedingt das, was Du suchst. > find -regex gibt ./ aus
> Ein Blick in die Manpage zu find(1) hilft Dir. Da steht zu "-regex" > > This is a match on the whole path, not a search. For example, [...] > Das hab ich dann auch gesehen (mea culpa ;-). > Das heisst soviel wie: das Pattern wird implizit verankert mit einem "^" > am Anfang und mit einem "$" am Ende des Strings, also "-regex a" findet > nicht alle Files, die ein "a" im Namen enthalten, sondern nur die, die > exakt "a" heissen (incl. Directories im Path). > Äh, Moment, das findet gar nichts. > Um also alle Files zu finden, die mit "a" anfangen, muss man mittels > > find . -regex '.*/a.*' > > suchen. Ist ungewohnt, steht aber eindeutig so in der Dokumentation. Das Das sind aber nicht alle Dateien, die mit a anfangen, sondern alle, die ein a enthalten, m.a.W., bei diesem Beispiel so ungefähr 1 Mio. Will man alle, die mit a anfangen, muss man "find -regex '\.\/a.*'" verwenden. Aber da sag ich dir bestimmt nichts neues. > funktioniert analog zum match-Operator in expr(1), der das schon seit eh > und je so macht. > > Sinnvoller ist, wie schon andere sagten, statt dessen klassisch mit grep > oder egrep zu arbeiten: > > find . | grep '/a' > > oder > > find . | egrep -i 'jpe?g$' > Ah ja genau. @Thorsten: damit vermeidest du deine converted.png (wg. "$") > BTW: sehr hilfreich ist auch das Modul File::Find von Perl, mit dem man > beliebige Operationen waehrend der Traversierung eines Verzeichnisses > ausfuehren kann. > > --jc Danke. Uff, das dauert (Fetching with LWP: ftp://ftp.cs.tu-berlin.de/pub/lang/perl/CPAN/authors/id/R/RG/RGARCIA/perl-5.9.4.tar.gz mit meinem Modem). -- Q: What do you say to a New Yorker with a job? A: Big Mac, fries and a Coke, please!