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

Re: extra arguments inserted by glob thinger e:: get sorted afterwards

On Feb 5,  3:49pm, Peter Stephenson wrote:
} Mikael Magnusson wrote:
} > Hi, someone just asked on irc how to give a globbed list of files to a
} > program with a -f inserted before each argument, so I told him
} > *(e:'reply=(-f $REPLY)':), that doesn't work however, as the arguments
} > are resorted afterwards, which seems like the less useful way to do
} > it.
} It's the *only* way to do it.  The arguments are all assumed to be
} files, which is after all the point of globbing.  Either you get them
} sorted as files or you don't get them sorted.

I suppose what Mikael would like is for "-f $REPLY" to be glob-sorted
as a unit, but still word-split at parse time.  Breaks if the actual
file name has spaces.

The manual sort of implies that *(e.'reply+="-f $REPLY"'.:x) should be
the way to do this -- glob first, then split the result into words at
whitespace after; the doc says only that :x doesn't work for parameters,
failing to mention that it doesn't work for globbing either.  However,
there's an equally good argument that the :x would apply before sorting,
if it worked at all.

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