Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: using parameter expansion sorting flags



Hi Rory,

2011/9/22 Rory Mulvaney <rorymulv@xxxxxxxxx>:
> I have a few filenames that I put into an array with:
>
> PNMFILES=( f.*.{Atop,Bbot}.pnm )
>
> the ordered contents of this array become:
>
> f.0009.Atop.pnm f.0010.Atop.pnm f.0011.Atop.pnm f.0012.Atop.pnm
> f.0009.Bbot.pnm f.0010.Bbot.pnm f.0011.Bbot.pnm

That's because you're mixing braces and globbing. What happens first is:
 f.*.{Atop,Bbot}.pnm →  f.*.Atop.pnm f.*.Btop.pnm
then only globbing is performed.

You could have used globbing only, and the “o” flag to have a sorted
array in the first place:
PNMFILES=( f.*.(Atop|Bbot).pnm(on) )

> Now I can't figure out how to order them in an array, using the parameter
> expansion sorting flags n and o, as:
>
> f.0009.Atop.pnm f.0009.Bbot.pnm f.0010.Atop.pnm f.0010.Bbot.pnm
> f.0011.Atop.pnm f.0011.Bbot.pnm f.0012.Atop.pnm
> Also I'd like the resulting resorted array PNMFILES2 to be such that:
>
> echo ${PNMFILES2[2]}
>
> yields:
>
> f.0009.Bbot.pnm
>
> rather than some single character.

PNMFILES2=${(on)PNMFILES}

Best regards,

-- 
Jérémie



Messages sorted by: Reverse Date, Date, Thread, Author