Beginners  are mostly afraid of command prompt.  Whenever they see a command  prompt, they immediately say “its very difficult”.  But it’s not true.   The Command prompt is as friendly as GUI (Graphical User Interface),  provided if you use it with proper procedure.
Most people use GUI tools to search for files.  They don’t realize  that they can use command line tools to search for them as well! GNU  ‘find’ is such like a tool which can not only search files but can even  copy, move or delete these files on the fly.
So let’s see that how ‘find’ works.
Find Your Lost Files!
Let’s start from a simple example:
Suppose you want to search for a file named ‘master.txt’ in your home directory.
Open the Terminal and issue the following command:
find . -name “master.txt”
‘find’  will immediately show the results.  If ‘find’ does not show any result,  this means that the file, in our case, ‘master.txt’, does not exist.  It  is not always the case that you want to find something in you home  directory.  The lost/desired file may be anywhere in your computer.  Suppose  you want to find a file named ‘space-01.jpg’ and you only know that its  located somewhere in /usr directory. You can find it by issuing  following command in Terminal:
find /usr -name “space-01.jpg”
and ‘find’ will tell you that this is located under /usr/share/backgrounds.
Using Wildcards
Maybe you want to search for a file but you don’t know its exact name?  Don’t  worry!  You can still locate the file using ‘GNU find’ and wildcard will  help you in this regard. Wildcards are a way of searching files when you  don’t know much about your desired file.
One of the commonly used wildcard is asterisk (*).  Lets consider an example to better understand the things.
Suppose  you want to search a file named ‘Jumping_Flowers’ but you only remember  the ‘Jumping‘ part of the file name.  So issue the following command in  Terminal:
find . -name “Jumping*”
And it will display all the files starting with the word ‘Jumping’.  You can use asterisk (*) anywhere with a file name.  For example:
find . -name “*Jumping*”
And it will display all the files which contains the word ‘Jumping’.
Here are some more examples of use of a wildcard:
find . -name “Jumping*Flowers*”
find . -name “*Jumping*Flowres.mp3”
Searching For Different File Types
Sometimes  you are not looking for some specific file but you are looking for a  group of files.  For example, you may be looking for all the .txt files  in your home directory.  To find all the .txt files, you will give the following command in Terminal:
find . -name *.txt
In case of mp3 files, the above command will be:
find . -name *.mp3
When You Want to Search with Respect to Time
If you want to search for files by the last time they were accessed, you can use -amin flag with ‘find’.  In this case you have to put a minus (-) sign  before the time.  The time here is in minutes.  In order to search for  .doc files which were accessed in last 10 minutes, you will give the  following command:
find . -amin -10 -name "*.doc"
Similarly, to search for .doc files which were modified in last 20 minutes, you will use -mmin option as follows:
find . -mmin -20 -name “*.doc”
Search For Files which are Eating Your Hard Disk
There  may be files on your system which are not only huge in size but also  located obscure places.  You may also may not know when they were last  accessed.  You have to use -size option with ‘find’ to locate them.
Let’s see how we can do this:
find . -size +100M
It  will list all those files which are greater than 100 Megabytes.  You can  replace ‘M’ with ‘G’ (for Gigabyte) or with ‘k’ (for Kilobyte)
Copy, Move, or Delete Unwanted Files on the Fly
Copy – ‘find’  can also be used to copy or backup your files.  You can use ‘find’ to  copy certain files from one location to other with one simple command.
Suppose  you want copy all of your mp3 songs from your home directory to your  Windows Partition.  Enter the following command in Terminal:
find . -name "*.mp3" -exec cp {} /path/to/Windows_Drive \;
And all of your mp3 files will be copied to the desired Drive/Folder.
Move – There  may be situations that you quickly want to move all of your document  files from your Hard Disk to your USB to keep them safe.  To move all of  your documents from your home directory to your USB, you will issue the  following command:
find . -name "*.doc" -exec cp {} /path/to/USB \;
Delete –  Suppose there are a lot of .tmp files and you want to get rid of them  at once.  Again ‘GNU find’ is at your service and does the work for you.   Issue the following in Terminal and all of the .tmp files are gone…
find . -name '*.tmp' -exec rm {} \;
Which Files are Owned by You and Which Are Not?
There  may be a situation when you want to know that which files in some other  directories (or even in your home directory) are owned by some other  user of your computer.
Suppose  there is another user named ‘blackstar’ with whom you are sharing your  PC.  Now you want to know that which .doc files in Windows Directory is  owned by this user ‘blackstar’.  You can do this by issuing the following  command:
find /path/to/Windows_Drive -user blackstar -name “*.doc”
Just replace ‘blackstar’ with your username to search on your system.
Direct the Output of ‘find’ to a File
You  can save the results of your ‘find’ command to a text file which will  allow you to examine the results in detail at some later time (or to  create playlist of your songs).  For this purpose a greater than (>) sign is used (referred to as “piping the command”).
Suppose  you want to save the list of all the mp3 songs in your home directory  to a text file (which you can later share with your friend), you can do  this by:
find . -name "*.mp3" > mp3.txt
It will save the complete path to all of your mp3 songs in the file named mp3.txt.
Find, a Handy Command Line Tool
This  article is basically directed towards new users of Linux which are not  much familiar with command prompt. This is a small but comprehensive  article about ‘GNU find’ . The man pages of ‘find’ list a huge number of  options which are difficult to explain in detail in one small article. I  tried to cover those option which are commonly used. Obviously, to know  more about such a powerful tool , one has to visit its man pages again  and again and spend a lot time with ‘find’ 🙂