Since you cannot directly grep search on a directory, it will show "XYZ is a directory" error along with search results. This will search in all the files in the current directories, but it won't enter the subdirectories. The wild card actually substitutes with the name of all the files and directories in the current directory. To search for the word 'simple' in all the files of the current directories, just use wild card (*). Except empty.txt, all files contain the term 'simple' on which I'll perform the grep search. Here's the directory structure I am going to use in this example. Let me show you all this in details with proper examples so that it is easier for you to understand. You may also specify the directory path if you are not in the directory where you want to perform the search: grep -r search_term directory_path
You can make grep search in all the files and all the subdirectories of the current directory using the -r recursive search option: grep -r search_term. It only searches in all the files in the current directory. If you want to search all the files in a directory with grep, use it like this: grep search_term * Usually, you run grep on a single file like this: grep search_term filename Grep is an excellent tool when you have to search on the content of a file.