From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28915 invoked by alias); 28 Oct 2015 19:10:16 -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: X-Seq: 20846 Received: (qmail 13489 invoked from network); 28 Oct 2015 19:10:14 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1446059045; bh=yiQW7gqyzIzwh4c72uO9E3AD8f7Xvx+PDi/WQhQNIhU=; h=From:To:In-Reply-To:References:Subject:Date; b=W0OuYCsTuTaJE6NydZKOUOhBZZOkCCIMRI9dCQKhE8hFRyCCAM8L198zcdm7V9Aiq KdSiwq2j3DJAB4M/CsYiniAVfstU/2fbZmsIZ9Y/G/hyDsHAzIeqX5WRO64B1TzmhR 1lXY/jviHQzbYjgKHVvCRGEfkf9v08TwVmokdfgk= From: ZyX To: Mikael Magnusson , "vogt@linux.vnet.ibm.com" , Zsh Users In-Reply-To: References: <20151028065702.GA8236@linux.vnet.ibm.com> Subject: Re: Recursive globbing shorthand (a la **.c) MIME-Version: 1.0 Message-Id: <240121446059044@web30h.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Wed, 28 Oct 2015 22:04:04 +0300 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=utf-8 28.10.2015, 16:28, "Mikael Magnusson" : > On Wed, Oct 28, 2015 at 7:57 AM, Dominik Vogt wrote: >>  Most of the time, I use recursive globbing to find files of >>  certain types, e.g. >> >>    $ ll **/*.c >> >>  With the zsh here (4.3.17), recursive globbing works only >>  with a plain ** anyway (i.e. in "**x" and "x**" the ** works just >>  like a plain "*"). So, is it possible (or a useful future >>  feature) to make "**" imply a trailing "/*" if not with a trailing >>  pattern? Then we could type >> >>    $ ll **.c >> >>  as a shorthand, and the "traditional" uses would work without >>  change (e.g. **/*.c or **/foo). >> >>  (Note that on German keyboards, "/" and "*" are very awkward to >>  type in a sequence because both need the left shift key held and >>  the keys for the right hand are very far apart, so this is really >>  a usability issue.) > > If this is something you do often, you can do > alias -g '**.c=**/*.c' > > I don't think it's useful to implement generally though, there's no > particular reason to assume the pattern following the **/ should start > with a * This depends on how you treat patterns. In mercurial `**` is treated as `.*` and `*` is treated as `[^/]*`, so pattern `a**b` matches file `a/c/b` (note. With such interpretation transforming foo** into foo*/**, **bar into **/*bar and foo**bar into foo*/**/*bar makes perfect sense. Though mercurial is using regexps on a list of files, not the real globbing, this behaviour is official and not an accident: there are patterns like `**.c` in examples. As OP said this is convenient in many cases. // And git documentation officially says that only valid uses of `**` are `…/**`, `**/…` and `…/**/…`. > > -- > Mikael Magnusson