Grep for Windows – findstr example
I love grep
command on Linux, it helped to search and filter strings easily, always wonder what is the equivalent tool on Windows, and found this findstr
recently.
In this article, I will share some of my favorite “grep” examples on Linux, and how to “port” it to Windows with “findstr” command.
1. Filter a result
1.1 Classic example to filter a listing result.
#Linux
$ ls -ls | grep mkyong
#Windows
c:\> dir | findstr mkyong
1.2 Add ignore case, and filter the listing result with multiple strings.
#Linux - Need '-E' option and Uses "|" to separate multiple search strings.
$ ls -ls | grep -iE "mkyong|music"
#Windows - Use spaces to separate multiple search strings
c:\> dir | findstr -i "mkyong music"
2. Search a File
2.1 Search matched string in a file.
#Linux
$ grep mkyong test.txt
#Windows
c:\> findstr mkyong test.txt
2.2 Counting the number of matches.
#Linux
$ grep -c mkyong test.txt
#Windows - Piped with find /c command.
c:\> findstr -N "mkyong" test.txt | find /c ":"
3. Search a list of files
3.1 Search matched string in a list of files.
#Linux
$ grep mkyong -lr /path/folder
#Windows
c:\> findstr /M mkyong c:\folder\*
* (grep) -l , (findstr) /M = print only name of files containing matches.
4. Help
4.1 The most powerful command ~
#Linux
$ grep --help
$ man grep
#Windows
c:\> findstr -?
Note
Do you have other examples? Does share it below, thanks.
Do you have other examples? Does share it below, thanks.
Thanks man, It was very Helpful 🙂
How do I exclude lines starting with a space?
Unix: ls -l | egrep -v “^ “
Thank you
Very useful. Thanks!
Thanks, this is very useful.
Thank you . I found this article after very tired of finding about grep. but now my problem solved thank you..
what is with:
find myDirectory -type f | grep ‘.txt$’ >nl.files
I dont know how to fix the find command… Any help?
dir /B d:mydir*.tmp > nl.files
dir /B c:mydir | findstr tmp
But some files extensions may be displayed as uppercase and some as lowercase, so if not result when you type tmp, try type TMP
Of course after “:” must be a slash to the left “”
Thanks, it is very helpful
syntax on powershell commands is still too thick. Bash > Powershell Come on Redmond, you guys are great at copying. Lets get crackin’
search the string in current directory and its subdirectories while only displaying file names
#Windows
c:> findstr /M /S mkyong
Rather its:
findstr /M /S mkyong *.*
You could add /I to make a case-insensitive search
Worth noting that some unix basics work in Powershell out of the box, like `ls`. Don’t know if findstr works in powershell though, and the powershell equivalent to grep is painful for me to remember.
I tried to execute these commands in windows 10, but its showing that,
‘c:\’ is not recognised as an internal or external command.
Could anyone guide me about this.
Try this: findstr mkyong *
doesnt work for me