case-insensitive filename comparisons

Eliot Moss moss@cs.umass.edu
Tue Sep 3 13:26:02 GMT 2024


On 9/3/2024 9:13 AM, Rich Draves via Cygwin wrote:

> I often use grep -r --include. But it has a really annoying problem - the
> comparison of the filename is case-sensitive. The -i option seems to apply
> only to the regex not the filename matching.

> For example, I have many files named virtualenvironment.ini. But
> unfortunately, sometimes it is virtualEnvironment.ini,
> VirtualEnvironment.ini, etc.

> Grep -r --include=virtualenvironment.ini skips the latter files. As a
> work-around, I use --include="[Vv]irtual[Ee]nvironment.ini" but this is
> cumbersome and not a complete solution.

> Because Windows is case-insensitive/case-preserving, I think the Cygwin
> filename matching should also be case-insensitive. Am I missing something
> here?

Maybe ... Cygwin is trying to act as closely as possible to Posix behavior as
it can when running under Windows.  AFAIK, Posix does not offer
case-insensitive filename matching for grep.  While it's more cumbersome,
depending on the filenames you desire to match against, you could do something
like:

grep your-regex $(find . -iname 'virtualenvironment.ini')

The -iname operator of find asks it to do a case-insensitive filename match.
See also its -ipath and -iregex operators.

Regards - Eliot Moss


More information about the Cygwin mailing list