I wanted to search for a file that had 'Tokyo' in the basename,
in all directories below a given point.  I had been doing it 'find',
but thought globstar should work.
W/globstar set, I looked for:

ls **Tokyo*
(nothing)
ls ***Tokyo*
(nothing)
ls **Tokyo**Tokyo*
(nothing)
ls **/*Tokyo*
(found multiple matches (including the one I was
searching for))

A sample file I was searching for:

Library/Tokyo Ravens/[gg]_Tokyo_Ravens_-_01_[398DE7BC].mkv

I.e. had Tokyo in _both_, dir and subfiles,
Why didn't any of the 1st 3 patterns find anything?

It seemed that I needed a '/' in the pattern for it
to be processed as a globstar pattern...??

Is that supposed to be a requirement for globstar
to function?  From this (from bash manpage):

 *      Matches any string, including the null string.  When  the
        globstar  shell  option  is  enabled,  and * is used in a
        pathname expansion context, two adjacent  *s  used  as  a
        single  pattern  will  match  all  files and zero or more
        directories and subdirectories.  If followed by a /,  two
        adjacent  *s  will match only directories and subdirecto-
        ries.

The slashes don't seem to be required.

Other glob settings:

dotglob         on
extglob         on
failglob        off
globasciiranges on
globstar        on
nocaseglob      on
nullglob        off

 echo $BASH_VERSION
4.4.12(2)-release

Thanks,
-linda






Reply via email to