
- GREP COMMAND TO SEARCH FOR SPECIFIC FILE TYPE HOW TO
- GREP COMMAND TO SEARCH FOR SPECIFIC FILE TYPE WINDOWS
Print only the lines where the given string is at the beginning of the line. Adding ‘/M’ option to the command causes to print only the file names. You can customize the findstr command in the script to search in files with other extensions. The above command searches only text files. ‘pattern.txt ‘is the file having the strings(one per line) that need to be searched for. If you need to search for multiple strings, then you can do that with the below batch script.
GREP COMMAND TO SEARCH FOR SPECIFIC FILE TYPE WINDOWS
To search all the text files in the directory C:\data: findstr /I windows C:\data\*.txt You can use wildcard ‘*” to specify that all the files in a directory should be searched for the given string.įor example, to search for ‘windows’ in all the files in the current directory, you can use the below command. findstr /R *xyz filename.txt Search for text in all the files in a current directory Search for the occurrence of all words ending with ‘xyz’ in a file. Here the pattern can be specified using regular expressions. You can use regular expressions with findstr /R switch. C indicates that the search pattern has to be matched literally.įor example, to search for the string “Apple Ball Cat” in file Book.txt, the command would be as below findstr /C:"Apple Ball Cat" Book.txt Search with Regular Expressions Search for pattern with multiple words findstr /C:"word1 word2 word3." filename This command would print a line if it has has either the word ‘Apple’ or the word ‘Orange’ or both the words. Recurse in directories skip file matching PATTERN.Īs you’ve seen, the grep -r command makes it easy to recursively search directories for all files that match the search pattern you specify, and the syntax is much shorter than the equivalent find/grep command.įor more information on the find command, see my Linux find command examples, and for more information on the grep command, see my Linux grep command examples.Findstr "word1 word2 word3." filename.txt findstr "Apple Orange" fruits.txt Recurse in directories only searching file matching PATTERN. Read all files under each directory, recursively this is Here’s the section of the Linux grep man page that discusses the -r flag: As shown, you can use other normal grep flags as well, including -i to ignore case, -v to reverse the meaning of the search, etc.If you forget to add any directories, grep will attempt to read from standard input (as usual). Don’t forget to list one or more directories at the end of your grep command.This flag tells grep to print the matching filenames. This particular use of the grep command doesn’t make much sense unless you use it with the -l (lowercase "L") argument as well.Note that in this case, quotes are required around my search pattern.
GREP COMMAND TO SEARCH FOR SPECIFIC FILE TYPE HOW TO
Since I tend to mark comments in my code with my initials ("aja") or my name ("alvin"), this recursive egrep command shows how to search for those two patterns, again in a case-insensitive manner: You can also perform recursive searches with the egrep command, which lets you search for multiple patterns at one time. In this example, the search is made case-insensitive by adding the -i argument to the grep command. This next example shows how to recursively search two unrelated directories for the case-insensitive string "alvin": Your recursive grep searches don’t have to be limited to just the current directory. If you haven’t used commands like these before, to demonstrate the results of this search, in a PHP project directory I’m working in right now, this command returns a list of files like this: As you’ll see below, you can also add -i for case-insensitive searches.The -l option (lowercase letter L) says “list only filenames”.The -r option says “do a recursive search”.However, I was just reminded that a much easier way to perform the same recursive search is with the -r flag of the grep command:Īs you can see, this is a much shorter command, and it performs the same recursive search as the longer command, specifically: This command can be read as, “Search all files in all subdirectories of the current directory for the string ‘alvin’, and print the filenames that contain this pattern.” It’s an extremely powerful approach for recursively searching files in all subdirectories that match the pattern I specify. Solution 1: Combine 'find' and 'grep'įor years I always used variations of the following Linux find and grep commands to recursively search subdirectories for files that match a grep pattern:įind. Two solutions are shown next, followed by some additional details which may be useful. Unix/Linux grep FAQ: How can I perform a recursive search with the grep command in Linux? A $2 donation will help keep this site running!
