Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: something simple (I hope)
- X-seq: zsh-users 6438
- From: Dan Nelson <dnelson@xxxxxxxxxxxxxxx>
- To: ZSH User List <zsh-users@xxxxxxxxxx>, Thomas Köhler <jean-luc@xxxxxxxxxxxxxxxxx>
- Subject: Re: something simple (I hope)
- Date: Mon, 4 Aug 2003 10:49:54 -0500
- In-reply-to: <20030804153810.GA17793@xxxxxxxxx>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- References: <20030804143351.GA14857@xxxxxxxxx> <20030804151216.GB25043@xxxxxxxxxxxxxxxxx> <20030804153810.GA17793@xxxxxxxxx>
In the last episode (Aug 04), Andy Spiegl said:
> > > I want to put all files that match the regex pattern
> > > "^/var/tmp/exec\.[0-9]+$"
> > > into a list that I can then use in a foreach loop.
>
> > for i in /var/tmp/exec.[0-9][0-9]* ; do echo $i ; done
> Thanks but I really need a list (with a name).
> Actually in the meantime I found out how to do that:
> files=(/var/tmp/exec.[[:digit:]]*)
>
> But what is still bugging me is that this also matches files like
> /var/tmp/exec.01234.something
>
> I can't figure out how to tell zsh that there shouldn't be anything _after_
> digits. What is the zsh-equivalent of a $ in regular expressions?
Your problem isn't the lack of "$" (glob patterns always anchor to the
start and end so ^ and $ operators are unneeded), it's your use of "*".
"*" in a glob pattern means "match any character", and is equivalent to
the regex ".*" .
Try "/var/tmp/exec.<->". <-> is the <x-y> numeric range operator with
no minimum or maximum number, so it matches any numeric value.
The zsh equivalent to the regex "+" is "##", so you could also use
"/var/tmp/exec.[0-9]##" (make sure EXTENDED_GLOB is set).
--
Dan Nelson
dnelson@xxxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author