Bash offers you several commands to search for files and to search for contents of files:
This utility is only available if you have installed the findutils-locate package. With this command you can find out in which directory a specified file is located. If desired, use wild cards to specify filenames. The program is very speedy, because it uses a database specifically created for the purpose (rather than searching through the entire file system). This very fact, however, also results in a major drawback: locate is unable to find any files created after the latest update of its database. The database can be generated by root running updatedb.
With find, search for a file in a given directory. The first argument specifies the directory in which to start the search. The option -name must be followed by a search string, which may also include wild cards. Unlike locate, which uses a database, find scans the actual directory.
The grep command finds a specific search string in the specified text files. If the search string is found, the command displays the line in which searchstring was found along with the filename. If desired, use wild cards to specify filenames.
KDE and GNOME desktop store user-specific application data in hidden directories, for example .kde and .gnome.
To locate these directories on your computer, enter
if you have installed KDE desktop or
if you have installed GNOME desktop.
You will see that locate displays all file names in the database that contain the string .kde or .gnome anywhere. To learn how to modify this behavior refer to the man page of locate.
To search your home directory for all occurrences of filenames that contain the file extension .txt, use
find ~ -name '*.txt' -print
To search a directory (in this case, your home directory) for all occurrences of files which contain, for example, the word music, enter
grep music ~/*
Note that grep is case-sensitive— unless you use it with the -i option. With the command above you will not find any files containing Music.
If you want to use a search string which consists of more than one word, enclose the string in double quotation marks, for example:
grep "music is great" ~/*