From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28822 invoked by alias); 5 Feb 2010 16:50:44 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 27668 Received: (qmail 12460 invoked from network); 5 Feb 2010 16:50:43 -0000 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 Received-SPF: none (ns1.primenet.com.au: domain at closedmail.com does not designate permitted sender hosts) From: Bart Schaefer Message-id: <100205085031.ZM12282@torch.brasslantern.com> Date: Fri, 05 Feb 2010 08:50:31 -0800 In-reply-to: <201002051549.o15Fn9lr024564@news01.csr.com> Comments: In reply to Peter Stephenson "Re: extra arguments inserted by glob thinger e:: get sorted afterwards" (Feb 5, 3:49pm) References: <237967ef1002050715o3be2d441rcc8dbeb3e2b00483@mail.gmail.com> <201002051549.o15Fn9lr024564@news01.csr.com> X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: zsh workers Subject: Re: extra arguments inserted by glob thinger e:: get sorted afterwards MIME-version: 1.0 Content-type: text/plain; charset=us-ascii 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.