Re: Regular Expression bei Dateiendungen mit find
On Wed, Aug 23, 2006 at 11:38:58AM +0200, Gebhard Dettmar wrote:
> On Tuesday 22 August 2006 16:39, Juergen Christoffel wrote:
> > 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.
Doch:
touch a
find * -regex a
a
Ich schrieb ja zuvor, Du musst "find * -op" nehmen anstatt "find . -op"
oder "find -op" damit nicht der "./" davor erscheint.
> > 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.
Wir haben unterschiedliche Vorstellungen davon, was ein Name ist? Das
Pattern '.*/a.*' sollte alle Pfade matchen, die direkt nach einem "/" (also
dem Directory-Delimiter) ein "a" enthalten, da der Stern ueblicherweise
"gierrig" ist, also nur alle Files, deren Name mit "a" anfaengt:
touch a
touch ba
find -regex '.*/a.*'
./a
Aber er findet bei mir auch Subdirectories, deren Name mit "a" anfaengt.
Also noch ein Grund mehr, direkt grep/egrep zu nehmen.
> 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).
Modem? Das ist aber doch so 20. Jahhundert ;-) Da File::Find beim Perl-Core
dabei ist, sollte es schon auf Deinem System gewesen sein, falls Du Perl
nicht geloescht hattest. Was Du da holst, ist die komplette neueste
Perl-Version.
--jc
--
Ignorance more frequently begets confidence than does knowledge.
-- Charles Darwin
Reply to: