From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27506 invoked from network); 23 Jul 2005 21:24:14 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 23 Jul 2005 21:24:14 -0000 Received: (qmail 88061 invoked from network); 23 Jul 2005 21:24:06 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 23 Jul 2005 21:24:06 -0000 Received: (qmail 17074 invoked by alias); 23 Jul 2005 21:24:01 -0000 Mailing-List: contact zsh-users-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9134 Received: (qmail 17062 invoked from network); 23 Jul 2005 21:24:00 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 23 Jul 2005 21:24:00 -0000 Received: (qmail 87115 invoked from network); 23 Jul 2005 21:24:00 -0000 Received: from ns9.hostinglmi.net (213.194.149.146) by a.mx.sunsite.dk with SMTP; 23 Jul 2005 21:23:55 -0000 Received: from 212.red-80-35-44.pooles.rima-tde.net ([80.35.44.212] helo=localhost) by ns9.hostinglmi.net with esmtpa (Exim 4.51) id 1DwRTM-0004Nn-Fi for zsh-users@sunsite.dk; Sat, 23 Jul 2005 23:23:52 +0200 Date: Sat, 23 Jul 2005 23:26:57 +0200 From: DervishD To: Zsh Users Subject: Re: Sorting file names randomly Message-ID: <20050723212657.GA744@DervishD> Mail-Followup-To: Zsh Users References: <20050723194240.GA32416@DervishD> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20050723194240.GA32416@DervishD> User-Agent: Mutt/1.4.2.1i Organization: DervishD X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - ns9.hostinglmi.net X-AntiAbuse: Original Domain - sunsite.dk X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - dervishd.net X-Source: X-Source-Args: X-Source-Dir: X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.0.4 Hi all :) and sorry for self-replying... * DervishD dixit: > A time ago (zsh-workers/19128) Bart explained me how to sort > randomly a group of files. Namely, the solution is this: > > array=(*(e:'reply=%0(l..$RANDOM)$REPLY:)) > array=(${(%)array) [...] > Well, the problem is that the above doesn't work if you have to > use more than one pattern, because the '(e' construct will affect > only the last element. Since I don't know how many elements will be > present, I cannot use an '(e' construct on each element. Moreover it > would be very messy. I've written a not very good solution that at least works: function shuffle () { emulate -L zsh setopt nullglob globdots rcexpandparam RANDOM=`date +%s` [[ $# -eq 0 ]] && set '*' reply=($~*(e:'REPLY="${(l.5..0.)RANDOM} $REPLY"':)) reply=(${(o)reply}) reply=(${reply/#????? /}) print -l $reply return 0 } alias shuffle="noglob 'shuffle'" The function returns the list in the 'reply' array parameter, and prints it on stdout. If anybody can make it better/shorter, suggestions are welcome ;) The three array assignments can be probably shortened. Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net http://www.pleyades.net & http://www.gotesdelluna.net It's my PC and I'll cry if I want to...