From: Andreas Schwab Date: Sun, 16 Apr 2023 19:04:59 GMT Subject: Re: Glob patterns w/ **; zero or more? Message-ID: <87ttxfsl5w.fsf@igel.home> In-Reply-To: On Apr 16 2023, Maƫl Nison wrote: > I noticed that, in a repo with a single `main.c` file, `git ls-files > './**/main.c'` (note the surrounding quotes, to avoid shell globbing) > returns no result even though `git ls-files main.c` does. It however > can find any `main.c` file located in a subdirectory, suggesting `**` > is interpreted as "one or more" rather than "zero or more". Can you > confirm it'd be a bug? I checked in both 2.38 and 2.40. By default, pathspec matching does not take "**" specially, making it equivalen to "*", but it can match "/". Thus "./**/main.c" is the same as "*/main.c" (the leading "./" always matches) and matches paths with at least one "/" in it (thus "*/main.c" does not match "main.c"). If you use ":(glob)./**/main.c", it uses shell glob matching, where "**" is special and "/**/" can match "/", but "*" does not match "/". -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different."