Linux/Unix: Find Command Ignore Case Insensitive Search

by on March 23, 2014 · 1 comment· LAST UPDATED March 23, 2014

in , , , ,

I am a new Linux and Unix-command line user. I am using find command to search file called "fooBar.conf.sample" in my home directory. I do not know the case, it could be uppercase, lowercase, or a mix of both. How can search a file and ignore case on a Linux or Unix-like system?

Tutorial details
DifficultyEasy (rss)
Root privilegesNo
RequirementsNone
Estimated completion time1m
The find command recursively descends the directory tree for each path provided, evaluating an expression. It is mainly used to search files and directories on Linux and Unix-like systems. The syntax is as follows to search files according to given criteria. You can search for files by name, owner, group, type, permissions, date, and other criteria:

find dir-to-look criteria what-to-do

OR

find [options] dir-to-look criteria what-to-do

In this example, search your $HOME for a file called hello.c:

 
find $HOME -name "hello.c" -print
 

This will search the whole $HOME (i.e. /home/username/) system for any files named "hello.c" and display their pathnames:

/Users/vivek/Downloads/hello.c
/Users/vivek/hello.c

However, it will not match HELLO.C or HellO.C. To match is case insensitive pass the -iname option as follows:

 
find $HOME -iname "hello.c" -print
 

Sample outputs:

/Users/vivek/Downloads/hello.c
/Users/vivek/Downloads/Y/Hello.C
/Users/vivek/Downloads/Z/HELLO.c
/Users/vivek/hello.c

Finally, pass the -type f option to only search for files:

 
find /dir/to/search -type f -iname "fooBar.conf.sample" -print
find $HOME -type f -iname "fooBar.conf.sample" -print
 

A note about AIX/HP-UX and other old Unix-like systems

The -iname works either on GNU or BSD (including OS X) version find command. If your version of find command does not supports -iname, try the following syntax using grep command:

find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"
 

OR try

 
find $HOME -name '[hH][eE][lL][lL][oO].[cC]' -print
 

Sample outputs:

/Users/vivek/Downloads/Z/HELLO.C
/Users/vivek/Downloads/Z/HEllO.c
/Users/vivek/Downloads/hello.c
/Users/vivek/hello.c
See also
TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 1 comment… read it below or add one }

1 Anthony June 20, 2014 at 1:28 am

the locate command fines file on a system. adding -i has it ignore case

locate -i hello.c

However it will also find directories with the same name that can produce a long for something like “hello” to prevent this use something like this

locate -ir /hello.c$

That will locate a the exact but case insensitive filename “hello.c”

Reply

Leave a Comment

Tagged as:

Previous Faq:

Next Faq: