From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 6e70c8c5 for ; Mon, 8 Jul 2019 10:45:37 +0000 (UTC) Received: (qmail 7984 invoked by alias); 8 Jul 2019 10:45:24 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: List-Unsubscribe: X-Seq: 24030 Received: (qmail 17652 invoked by uid 1010); 8 Jul 2019 10:45:24 -0000 X-Qmail-Scanner-Diagnostics: from mailout1.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25503. spamassassin: 3.4.2. Clear:RC:0(210.118.77.11):SA:0(-7.0/5.0):. Processed in 4.0641 secs); 08 Jul 2019 10:45:24 -0000 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.samsung.com designates 210.118.77.11 as permitted sender) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20190708104441euoutp01b5e17c4a3dfcc7b62a91072bb7d77165~vaKuLogq53019130191euoutp01P DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1562582681; bh=9TTM6uLUz68aAPdiiqN5k0MCn/7jTPkJJphtlS39AA4=; h=Subject:From:To:Date:In-Reply-To:References:From; b=kPW9dQZTqVpNxYVV133FVwl8H0W1/kteu88k9yxV76xjCjH1HR9T+jt4B2qzDvQ2v /sNh5R0IaeBDnYqy8NOA5/sTX/6t0hHhRgAcGHxz8Y6WmCO3YoBo8Org/VIdaXuNml 0VUOUkFS2YEM8TWEjZ/VKdMl+5+EMJ4k0YEgCFWo= X-AuditID: cbfec7f5-b75ff700000010e5-20-5d231e988ef7 Message-ID: <1562582679.5037.2.camel@samsung.com> Subject: Re: is there a way to use *.{txt,zip,tbz,dmg} if one or more might be missing? From: Peter Stephenson To: Date: Mon, 8 Jul 2019 11:44:39 +0100 In-Reply-To: X-Mailer: Evolution 3.18.5.2-0ubuntu3.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHIsWRmVeSWpSXmKPExsWy7djP87oz5ZRjDRZJWew4uZLRgdFj1cEP TAGMUVw2Kak5mWWpRfp2CVwZC889YC44Jlaxf/FRpgbG00JdjJwcEgImEo9mT2bqYuTiEBJY wSix8+gydginh0mir2EiK4TTzSQx78cTJpiWac0dbCC2kMByRon1e33giu6vWckM4ZxmlPgz sQPKOc8osfbfamaQFl4BQ4kzX66AtQsLREqc+tgNFmcDik/dNJsRxBYREJd4NvMbC4jNIqAi MeHaAbAaToFAiefX70OdoSGx4eYxJoiZghInZz4Bq2cWkJdo3jobbLGEwH02iUun2hghGlwk Wrq/MkPYwhKvjm9hh7BlJP7vnM8E0dDOKLFm0mt2CKeHUWLT0TtQ3dYSfbcvAtkcQCs0Jdbv 0ocIO0os73vDChKWEOCTuPFWEOIIPolJ26YzQ4R5JTraoKGtJrGjaSsjRFhG4ukahQmMSrOQ fDALyQezEFYtYGRexSieWlqcm55abJyXWq5XnJhbXJqXrpecn7uJEZgKTv87/nUH474/SYcY BTgYlXh4JXSUYoVYE8uKK3MPMUpwMCuJ8CYGyccK8aYkVlalFuXHF5XmpBYfYpTmYFES561m eBAtJJCeWJKanZpakFoEk2Xi4JRqYLwloCqtyel4fs7ysAu8VlPKb0a76LT7PfbVqs5z6t2h fmTP9vdKS/Y4XF71uCuEddN2y0PX1EqOe77d8+ja9p8F73z0w/pXCZu9fMIe03UvIT3L3ezt zpZuPRu/P3Nil3PJdXg/Y4jTj233VV1e9Y2jbNu5LkeJE+G8thKBG0oDnJcv+7OWVYmlOCPR UIu5qDgRAD5MS+UBAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpmkeLIzCtJLcpLzFFi42I5/e/4Xd0ZcsqxBj/+8VjsOLmS0YHRY9XB D0wBjFF6NkX5pSWpChn5xSW2StGGFkZ6hpYWekYmlnqGxuaxVkamSvp2NimpOZllqUX6dgl6 GQvPPWAuOCZWsX/xUaYGxtNCXYycHBICJhLTmjvYuhi5OIQEljJKtH48yw6RkJH4dOUjlC0s 8edaF1RRJ5PEmcOTWCCc04wSJ+8fg3LOM0q0P1nJDNLCK2AocebLFTYQW1ggUuLUx26wOBtQ fOqm2YwgtoiAuMSzmd9YQGwWARWJCdcOgNVwCgRKPL9+nwli6FtGiZ8/N4ENYhbQlGjd/hvq Jg2JDTePMUEsE5Q4OfMJC0SNvETz1tnMExiFZiFpmYWkbBaSsgWMzKsYRVJLi3PTc4uN9IoT c4tL89L1kvNzNzECI2DbsZ9bdjB2vQs+xCjAwajEw8shpxQrxJpYVlyZe4hRgoNZSYQ3MUg+ Vog3JbGyKrUoP76oNCe1+BCjKdBHE5mlRJPzgdGZVxJvaGpobmFpaG5sbmxmoSTO2yFwMEZI ID2xJDU7NbUgtQimj4mDU6qBcdrSaEfHRKX0aA77pn8LXXqXcC68WbaX/RTjib4qa8V6/a1T I55fPF/dd+DBnfVLxD6wJLf/klK+drT+ssX5xw96v2+LvbtYtJlpgpvm5MNO3r9UA713sfA/ 6FsUlpG6IsCi7nJYJGdQYrgRZ9fjX3ZZe9bfWnV/7dd8Fx77Zs77B1Y8EvUMVmIpzkg01GIu Kk4EAHKYbySWAgAA X-CMS-MailID: 20190708104440eucas1p1def4ba79a052b56fde5d1ffbd3775a37 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20190708001212epcas3p2e942dedc816222b19cc7f451ef3154ac X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20190708001212epcas3p2e942dedc816222b19cc7f451ef3154ac References: On Sun, 2019-07-07 at 17:10 -0700, Bart Schaefer wrote: > On Sun, Jul 7, 2019 at 4:28 PM TJ Luoma wrote: > >  > >  > > Is there a way to do basically the same thing, but tell `mv` "if is at > > least one file with any of these extensions, then move to ~/dir/" ? > Use an alternation pattern instead of brace expansion: >  >     mv -vn *.(txt|zip|tbz|dmg) ~/dir/ I'm surprised to see I never added this to the FAQ.  It's getting quite hard to search, though... pws diff --git a/Etc/FAQ.yo b/Etc/FAQ.yo index c4f65e97a..a8d88ec7c 100644 --- a/Etc/FAQ.yo +++ b/Etc/FAQ.yo @@ -128,6 +128,7 @@ Chapter 3:  How to get various things to work  3.27. What are these `^' and `~' pattern characters, anyway?  3.28. How do I edit the input buffer in $EDITOR?  3.29. Why does `which' output for missing commands go to stdout? +3.30. Why doesn't the expansion mytt(foo.{tex,aux,pdf}) do what I expect?    Chapter 4:  The mysteries of completion  4.1. What is completion? @@ -1995,6 +1996,44 @@ sect(Why does `which' output for missing commands go to stdout?)    the exit status does reflect the fact the command can't be found.     +sect(Why doesn't the expansion mytt(*.{tex,aux,pdf}) do what I expect?) + +  Based on the behaviour of some other shells, you might guess that the +  following expression: +  verb( +    echo *.{tex,aux,pdf} +  ) +  would be the way to echo any files ending in mytt(.tex), mytt(.aux) or +  mytt(.pdf) in the current directory.  Depending on your settings for +  matching (see link(2.1)(21), in particular tt(NO_NOMATCH)), you may +  see something else, in particular an error about (say) mytt(*.aux) if +  there were no files ending mytt(.aux). + +  The reason for this is that the brace expansion isn't actually +  a form of pattern matching.  Instead, the line above is equivalent to +  verb( +    echo *.tex *.aux *.pdf +  ) +  giving you three separate patterns.  With the default mytt(NOMATCH) +  behaviour in effect, any pattern that fails to match is an error. + +  However, there em(is) a way of doing exactly what you want, using +  parentheses instead of braces: +  verb( +    echo *.(tex|aux|pdf) +  ) +  This is now a pattern matching expression, so is considered as a +  single pattern.  Now any file that exists will supress the +  mytt(NOMATCH) behaviour, but you'll still get all the files that do +  match. + +  This use of parentheses is special to zsh.  Modern Bourne-like shells +  have a syntax like this, too, but with an mytt(@) in front of the +  parentheses: again, see link(2.1)(21), and search for mytt(@+LPAR()). +  This is harder for the user to remember but easier for the shell to +  parse! + +  chapter(The mysteries of completion)