Linux find ignore case

Linux/Unix: Find Command Ignore Case Insensitive Search

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?

[donotprint]

Tutorial details
Difficulty level Easy
Root privileges No
Requirements None
Est. reading time 1m

[/donotprint]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

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

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

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

  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard

Join Patreon

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

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

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:

See also
  • Solaris UNIX Case-Insensitive Find File Search
  • See all find command examples from our /faq/ sections.
  • Man pages – grep(1)

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Category List of Unix and Linux commands
Documentation help • mandb • man • pinfo
Disk space analyzers df • duf • ncdu • pydf
File Management cat • cp • less • mkdir • more • tree
Firewall Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04
Linux Desktop Apps Skype • Spotify • VLC 3
Modern utilities bat • exa
Network Utilities NetHogs • dig • host • ip • nmap
OpenVPN CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04
Package Manager apk • apt
Processes Management bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop
Searching ag • grep • whereis • which
Shell builtins compgen • echo • printf
Text processing cut • rev
User Information groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w
WireGuard VPN Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04

Comments on this entry are closed.

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”

Thanks. Very useful. I also found that with the locate command, you can add a parameter -i to ignore case

Источник

25 simple examples of Linux find command

Linux find command

The Linux find command is a very useful and handy command to search for files from the command line. It can be used to find files based on various search criterias like permissions, user ownership, modification date/time, size etc. In this post we shall learn to use the find command along with various options that it supports.

The find command is available on most linux distros by default so you do not have to install any package. The find command is an essential one to learn, if you want to get super productive with the command line on linux.

The basic syntax of the find command looks like this

1. List all files in current and sub directories

This command lists out all the files in the current directory as well as the subdirectories in the current directory.

The command is same as the following

2. Search specific directory or path

The following command will look for files in the test directory in the current directory. Lists out all files by default.

The following command searches for files by their name.

We can also use wildcards

Note that all sub directories are searched recursively. So this is a very powerful way to find all files of a given extension.

Trying to search the «/» directory which is the root, would search the entire file system including mounted devices and network storage devices. So be careful. Of course you can press Ctrl + c anytime to stop the command.

Ignore the case

It is often useful to ignore the case when searching for file names. To ignore the case, just use the «iname» option instead of the «name» option.

3. Limit depth of directory traversal

The find command by default travels down the entire directory tree recursively, which is time and resource consuming. However the depth of directory travesal can be specified. For example we don’t want to go more than 2 or 3 levels down in the sub directories. This is done using the maxdepth option.

The second example uses maxdepth of 1, which means it will not go lower than 1 level deep, either only in the current directory.

This is very useful when we want to do a limited search only in the current directory or max 1 level deep sub directories and not the entire directory tree which would take more time.

Just like maxdepth there is an option called mindepth which does what the name suggests, that is, it will go atleast N level deep before searching for the files.

4. Invert match

It is also possible to search for files that do no match a given name or pattern. This is helpful when we know which files to exclude from the search.

So in the above example we found all files that do not have the extension of php, either non-php files. The find command also supports the exclamation mark inplace of not.

5. Combine multiple search criterias

It is possible to use multiple criterias when specifying name and inverting. For example

The above find command looks for files that begin with abc in their names and do not have a php extension. This is an example of how powerful search expressions can be build with the find command.

When using multiple name criterias, the find command would combine them with AND operator, which means that only those files which satisfy all criterias will be matched. However if we need to perform an OR based matching then the find command has the «o» switch.

The above command search for files ending in either the php extension or the txt extension.

6. Search only files or only directories

Sometimes we want to find only files or only directories with a given name. Find can do this easily as well.

Quite useful and handy!

7. Search multiple directories together

So lets say you want to search inside 2 separate directories. Again, the command is very simple

Check, that it listed files from 2 separate directories.

8. Find hidden files

Hidden files on linux begin with a period. So its easy to mention that in the name criteria and list all hidden files.

9. Find files with certain permissions

The find command can be used to find files with a specific permission using the «perm» option. The following command searches for files with the permission 0664

This can be useful to find files with wrong permissions which can lead to security issues. Inversion can also be applied to permission checking.

10. Find files with sgid/suid bits set

The «perm» option of find command accepts the same mode string like chmod. The following command finds all files with permission 644 and sgid bit set.

Similarly use 1664 for sticky bit. The perm option also supports using an alternative syntax instead of octal numbers.

Note that the «2>/dev/null» removes those entries that have an error of «Permission Denied»

11. Find readonly files

Find all Read Only files.

12. Find executable files

The following command will find executable files

13. Find files owned to particular user

To find all or single file called tecmint.txt under /root directory of owner root.

We could also specify the name of the file or any name related criteria along with user criteria

Its very easy to see, how we can build up criteria after criteria to narrow down our search for matching files.

14. Search files belonging to group

Find all files that belong to a particular group.

Did you know you could search your home directory by using the

Search file and directories based on modification date and time

Another great search criteria that the find command supports is modification and accessed date/times. This is very handy when we want to find out which files were modified as a certain time or date range. Lets take a few examples

15. Find files modified N days back

To find all the files which are modified 50 days back.

16. Find files accessed in last N days

Find all files that were accessed in the last 50 days.

17. Find files modified in a range of days

Find all files that were modified between 50 to 100 days ago.

18. Find files changed in last N minutes.

Find files modified within the last 1 hour.

19. Files modified in last hour

To find all the files which are modified in last 1 hour.

20. Find Accessed Files in Last 1 Hour

To find all the files which are accessed in last 1 hour.

21. Find files of given size

Search files and directories based on size. To find all 50MB files, use.

22. Find files in a size range

To find all the files which are greater than 50MB and less than 100MB.

23. Find largest and smallest files

The find command when used in combination with the ls and sort command can be used to list out the largest files.
The following command will display the 5 largest file in the current directory and its subdirectory. This may take a while to execute depending on the total number of files the command has to process.

Similary when sorted in ascending order, it would show the smallest files first

24. Find empty files and directories

The following command uses the «empty» option of the find command, which finds all files that are empty.

To file all empty directories use the type «d».

Really very simple and easy

Some advanced operations

The find command not only finds files based on a certain criteria, it can also act upon those files using any linux command. For example, we might want to delete some files.

Here are some quick examples

25. List out the found files

Lets say we found files using find command, and now want to list them out as the ls command would have done. This is very easy.

26. Delete all matching files or directories

The following command will remove all text files in the tmp directory.

The same operating can be carried out with directories, just put type d, instead of type f.

Lets take another example where we want to delete files larger than 100MB

Summary

So that was a quick tutorial on the linux find command. The find command is one of the most essential commands on the linux terminal, that enables searching of files very easy. Its a must of all system administrators. So learn it up. Have any questions ? Leave a comment below.

A Tech Enthusiast, Blogger, Linux Fan and a Software Developer. Writes about Computer hardware, Linux and Open Source software and coding in Python, Php and Javascript. He can be reached at [email protected] .

55 thoughts on “ 25 simple examples of Linux find command ”

Great summary with categorized examples
Thanks!

Long Path tool can resolve error messages like: path too long, cannot delete file, too long path, destination path is too long, etc.

Very good article but how i can use find to search names with (S) for example ?

Becuase i try :
find . -iname ‘(S)’
find . -iname “(S)”

but the no results

Have you tried:
find . -iname ‘*(S)*’
or
find . -iname “*(S)*”
?

I wanna find a certain txt doc. in ROOT by using:
find / -name test.txt
Why does this command not work?

use this command instead (find ./filename)

Was after a solid search and replace technique for file names today, and uncovered this page on ‘find’. Thanks for the tips. I am sure I’ll incorporate them into day-to-day operations.

Hi everyone. I am Kreg i am from Philipines. Thanks for approved.

Thanks for the article. It’s really useful. I am wondering how can I use the find command and exclude the files that are using by some processes? I can find if files are used by process by:
find path_to_files -type f -name “some_name” -exec fuser <> \;
The output will show if there are files used by any processes but how can I get output that will show only files that are currently not used by any process?

It would become more perfect if “Delete all files which are older than X time” in the last. This is a good article. Thanks for sharing.

Your article is very informative. it’s really helpful……

You use the word “criterias”. That’s a mistake. Criteria is already plural. The singular is criterion. Thanks for providing the info here.

Excelente presentacion. buenos ejemplos y muy practicos.
Saludos.

That was really helpful. Concise and clear article, thank you!

Very nice presentation. Thank you so much

Very useful find command explanation. Thanks

Yes you are right about it

In connection with -o need to mention use of escaped parentheses \(, \) to group the criteria

Note: one criterion, two criteria, no criterias.

Also “Its” is a possessive adjective. “it’s” is short for “it is”.

thanks a lot for very useful post =))

Very useful article! Thank you!

You are awesome! this is a treasure trove of helpful information!

I used to have similar problems too, but after using”long path tool” everything was solved.

Please use this software and solve your computer, copy, delete, long path files.

Thanks for these good examples.

The path you entered, is too long. Enter a shorter path
File Name could not be found. Check the spelling of the filename,
and verify that the file location is correct.

I used to have similar problems too, but after using
“long path tool” You can use to solve this problem.

The path you entered, is too long. Enter a shorter path
File Name could not be found. Check the spelling of the filename,
and verify that the file location is correct.

Do not worry if you want to remove the blocked files or too long path files from your system, here I suggest a smooth way. Use “Long path tool” software and keep yourself cool.

Great intro! Thanks!
I think I have found a typo, in the Section “Find readonly files”: instead of “-perm /u=r” (which means: at least user-readable — compare with the following section), it should be “-perm -u=r”. That is, according to the man, ‘/’ means “at least” and ‘-‘ means “exactly”. I admit though that the man daunted me before I saw this page.

every command i tried fails with “find: paths must precede expression”
why?

find . -type f -exec ls -s <> \; | sort -n -r | head -5

-s what it will do ??

what about braces “ < >” in that ?

find . -type f -exec ls -s <> \; | sort -n -r | head -5

find = find files
. = directory to start at
-type = only match regular files

-exec = when you find a matching file, run this command
<> = the matching file
\; = the end of the command

So when find matches find foo.txt, it runs:

What -s means depends on the ls command.

Sorry, had a typo, it should be:

So when find matches foo.txt, it runs:

-s it print the allocated size

Thank you very much. i FIND it very helpful 🙂
Could you also please post some info regarding finding all files that contains a particular search text.

Isn’t command 25 deleting everyting larger than 10M, not 100M like in the description?

Thanks a lot. Clear and complete !

Very good. Thank you.

Awesome article . Great work

Rakesh, when you use <> ; with an exec statement the find utility will replace <> with the path and filename. In essence in the the example above if the following were the results without an exec command:

$ find /home/bob/dir -type f -name *.log -size +10M
/home/bob/dir/large.log
/home/bob/dir/even_larger.log

What find would do is run 2 separate statements:

$ find /home/bob/dir -type f -name *.log -size +10M -exec rm -f <> ;
rm -f /home/bob/dir/large.log
and
rm -f /home/bob/dir/even_larger.log

It is helpful to know that the path is relative, so if you were to say be in the /home/bob folder and use:
find . type f -name *.log -size +10M

Your results would end up like this:
./dir/large.log
./dir/even_larger.log

Very good briefing on FIND. perhaps AWK should be next? 🙂

I think you’ve got an mistake: Hidden files do NOT start with a period, they start with a dot. In your example you search in your home dir for hidden files.
The way to find executable files by usind find ist the “-executable” flag and you have to know that directories executeables, too.
If you just want to find executable files you can use

find PATH -executable -type f -name “whatever*”

on the other hand, if you looking for directories you can use

find PATH -executable -type d -name “whatever*”

what’s the difference between dot and period in the command line?

really helpfull, thank you very much

All the commands really useful…Thank you very much

thanks good article

Good examples, well explained.
But…
You need to quote all the wildcards in examples 2, 3, 4, 6, 7, 26.
Unless you’re going to explain to your readers why commands might fail unexpectly 🙂

Nice article, I bookmarked it for reference. It’d be interesting to have an offline version available for download, preferably as simple text, manpage or texinfo format.

Try using the backslash character before the parentheses, like “\(S\)”.

Источник

Читайте также:  Зрительные образы для windows media players
Оцените статью