[windows] What are good grep tools for Windows?

Any recommendations on grep tools for Windows? Ideally ones that could leverage 64-bit OS.

I'm aware of Cygwin, of course, and have also found PowerGREP, but I'm wondering if there are any hidden gems out there?

This question is related to windows grep

The answer is


FINDSTR is fairly powerful, supports regular expressions and has the advantages of being on all Windows machines already.

c:\> FindStr /?

Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurances of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

Example usage: findstr text_to_find * or to search recursively findstr /s text_to_find *


FINDSTR is fairly powerful, supports regular expressions and has the advantages of being on all Windows machines already.

c:\> FindStr /?

Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurances of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

Example usage: findstr text_to_find * or to search recursively findstr /s text_to_find *


FINDSTR is fairly powerful, supports regular expressions and has the advantages of being on all Windows machines already.

c:\> FindStr /?

Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurances of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

Example usage: findstr text_to_find * or to search recursively findstr /s text_to_find *


FINDSTR is fairly powerful, supports regular expressions and has the advantages of being on all Windows machines already.

c:\> FindStr /?

Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurances of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

Example usage: findstr text_to_find * or to search recursively findstr /s text_to_find *


GrepWin Free and open source (GPL)

enter image description hereI've been using grepWin which was written by one of the tortoisesvn guys. Does the job on Windows...

http://stefanstools.sourceforge.net/grepWin.html


GrepWin Free and open source (GPL)

enter image description hereI've been using grepWin which was written by one of the tortoisesvn guys. Does the job on Windows...

http://stefanstools.sourceforge.net/grepWin.html


Update July 2013:

Another grep tool I now use all the time on Windows is AstroGrep:

AstroGrep awesomeness

Its ability to show me more than just the line search (i.e. the --context=NUM of a command-line grep) is invaluable.
And it is fast. Very fast, even on an old computer with non-SSD drive (I know, they used to do this hard drive with spinning disks, called platters, crazy right?)

It is free.
It is portable (simple zip archive to unzip).


Original answer October 2008

alt textGnu Grep is alright

You can download it for example here: (site ftp)

All the usual options are here.

That, combined with gawk and xargs (includes 'find', from GnuWin32), and you can really script like you were on Unix!

See also the options I am using to grep recursively:

grep --include "*.xxx" -nRHI "my Text to grep" *

Update July 2013:

Another grep tool I now use all the time on Windows is AstroGrep:

AstroGrep awesomeness

Its ability to show me more than just the line search (i.e. the --context=NUM of a command-line grep) is invaluable.
And it is fast. Very fast, even on an old computer with non-SSD drive (I know, they used to do this hard drive with spinning disks, called platters, crazy right?)

It is free.
It is portable (simple zip archive to unzip).


Original answer October 2008

alt textGnu Grep is alright

You can download it for example here: (site ftp)

All the usual options are here.

That, combined with gawk and xargs (includes 'find', from GnuWin32), and you can really script like you were on Unix!

See also the options I am using to grep recursively:

grep --include "*.xxx" -nRHI "my Text to grep" *

Update July 2013:

Another grep tool I now use all the time on Windows is AstroGrep:

AstroGrep awesomeness

Its ability to show me more than just the line search (i.e. the --context=NUM of a command-line grep) is invaluable.
And it is fast. Very fast, even on an old computer with non-SSD drive (I know, they used to do this hard drive with spinning disks, called platters, crazy right?)

It is free.
It is portable (simple zip archive to unzip).


Original answer October 2008

alt textGnu Grep is alright

You can download it for example here: (site ftp)

All the usual options are here.

That, combined with gawk and xargs (includes 'find', from GnuWin32), and you can really script like you were on Unix!

See also the options I am using to grep recursively:

grep --include "*.xxx" -nRHI "my Text to grep" *

Update July 2013:

Another grep tool I now use all the time on Windows is AstroGrep:

AstroGrep awesomeness

Its ability to show me more than just the line search (i.e. the --context=NUM of a command-line grep) is invaluable.
And it is fast. Very fast, even on an old computer with non-SSD drive (I know, they used to do this hard drive with spinning disks, called platters, crazy right?)

It is free.
It is portable (simple zip archive to unzip).


Original answer October 2008

alt textGnu Grep is alright

You can download it for example here: (site ftp)

All the usual options are here.

That, combined with gawk and xargs (includes 'find', from GnuWin32), and you can really script like you were on Unix!

See also the options I am using to grep recursively:

grep --include "*.xxx" -nRHI "my Text to grep" *

PowerShell's Select-String cmdlet was fine in v1.0, but is significantly better for v2.0. Having PowerShell built in to recent versions of Windows means your skills here will always useful, without first installing something.

New parameters added to Select-String: Select-String cmdlet now supports new parameters, such as:

  • -Context: This allows you to see lines before and after the match line
  • -AllMatches: which allows you to see all matches in a line (Previously, you could see only the first match in a line)
  • -NotMatch: Equivalent to grep -v o
  • -Encoding: to specify the character encoding

I find it expedient to create an function gcir for Get-ChildItem -Recurse ., with smarts to pass parameters correctly, and an alias ss for Select-String. So you an write:

gcir *.txt | ss foo


PowerShell's Select-String cmdlet was fine in v1.0, but is significantly better for v2.0. Having PowerShell built in to recent versions of Windows means your skills here will always useful, without first installing something.

New parameters added to Select-String: Select-String cmdlet now supports new parameters, such as:

  • -Context: This allows you to see lines before and after the match line
  • -AllMatches: which allows you to see all matches in a line (Previously, you could see only the first match in a line)
  • -NotMatch: Equivalent to grep -v o
  • -Encoding: to specify the character encoding

I find it expedient to create an function gcir for Get-ChildItem -Recurse ., with smarts to pass parameters correctly, and an alias ss for Select-String. So you an write:

gcir *.txt | ss foo


PowerShell's Select-String cmdlet was fine in v1.0, but is significantly better for v2.0. Having PowerShell built in to recent versions of Windows means your skills here will always useful, without first installing something.

New parameters added to Select-String: Select-String cmdlet now supports new parameters, such as:

  • -Context: This allows you to see lines before and after the match line
  • -AllMatches: which allows you to see all matches in a line (Previously, you could see only the first match in a line)
  • -NotMatch: Equivalent to grep -v o
  • -Encoding: to specify the character encoding

I find it expedient to create an function gcir for Get-ChildItem -Recurse ., with smarts to pass parameters correctly, and an alias ss for Select-String. So you an write:

gcir *.txt | ss foo


PowerShell's Select-String cmdlet was fine in v1.0, but is significantly better for v2.0. Having PowerShell built in to recent versions of Windows means your skills here will always useful, without first installing something.

New parameters added to Select-String: Select-String cmdlet now supports new parameters, such as:

  • -Context: This allows you to see lines before and after the match line
  • -AllMatches: which allows you to see all matches in a line (Previously, you could see only the first match in a line)
  • -NotMatch: Equivalent to grep -v o
  • -Encoding: to specify the character encoding

I find it expedient to create an function gcir for Get-ChildItem -Recurse ., with smarts to pass parameters correctly, and an alias ss for Select-String. So you an write:

gcir *.txt | ss foo


It may not exactly fall into the 'grep' category, but I couldn't get by on Windows without a utility called AgentRansack. It's a gui-based "find in files" utility with regex support. It's dead simple to right-click on a folder, hit "ransack.." and find files containing what you're looking for. Extremely fast too.


It may not exactly fall into the 'grep' category, but I couldn't get by on Windows without a utility called AgentRansack. It's a gui-based "find in files" utility with regex support. It's dead simple to right-click on a folder, hit "ransack.." and find files containing what you're looking for. Extremely fast too.


It may not exactly fall into the 'grep' category, but I couldn't get by on Windows without a utility called AgentRansack. It's a gui-based "find in files" utility with regex support. It's dead simple to right-click on a folder, hit "ransack.." and find files containing what you're looking for. Extremely fast too.


It may not exactly fall into the 'grep' category, but I couldn't get by on Windows without a utility called AgentRansack. It's a gui-based "find in files" utility with regex support. It's dead simple to right-click on a folder, hit "ransack.." and find files containing what you're looking for. Extremely fast too.


Baregrep (Baretail is good too)


Baregrep (Baretail is good too)


Baregrep (Baretail is good too)


Baregrep (Baretail is good too)


It's been a couple of years since you asked the question, but I'd recommend AstroGrep (http://astrogrep.sourceforge.net).

It's free, open source, and has a simple interface. I use it to search code all the time.


It's been a couple of years since you asked the question, but I'd recommend AstroGrep (http://astrogrep.sourceforge.net).

It's free, open source, and has a simple interface. I use it to search code all the time.


PowerShell has been mentioned a few times. Here is how you would actually use it in a grepish way:

Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"

It recursively searches all text files in the current directory tree for SomeString with case sensitivity.

Even better, run this:

function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }

Then do:

pgrep SomeStringToSearch *.txt

Then to really make it magical, add the function alias to your PowerShell Profile and you can almost dull the pain of not having proper command line tools.


PowerShell has been mentioned a few times. Here is how you would actually use it in a grepish way:

Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"

It recursively searches all text files in the current directory tree for SomeString with case sensitivity.

Even better, run this:

function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }

Then do:

pgrep SomeStringToSearch *.txt

Then to really make it magical, add the function alias to your PowerShell Profile and you can almost dull the pain of not having proper command line tools.


ack works well on Windows (if you've got Perl). I find it better than grep for many uses.


ack works well on Windows (if you've got Perl). I find it better than grep for many uses.


Cygwin includes grep. All the GNU tools amd Unix stuff works great on Windows if you install Cygwin.

http://www.cygwin.com/


Cygwin includes grep. All the GNU tools amd Unix stuff works great on Windows if you install Cygwin.

http://www.cygwin.com/


Git on Windows = grep in cmd.exe

I just found out installing Git will give you some basic Linux commands: cat, grep, scp and all other good ones.

Install then add the Git bin folder to your PATH and then your cmd.exe has basic Linux functionality!

http://code.google.com/p/msysgit/downloads/list?can=3


Git on Windows = grep in cmd.exe

I just found out installing Git will give you some basic Linux commands: cat, grep, scp and all other good ones.

Install then add the Git bin folder to your PATH and then your cmd.exe has basic Linux functionality!

http://code.google.com/p/msysgit/downloads/list?can=3


ack works well on Windows (if you've got Perl). I find it better than grep for many uses.


ack works well on Windows (if you've got Perl). I find it better than grep for many uses.


Cygwin includes grep. All the GNU tools amd Unix stuff works great on Windows if you install Cygwin.

http://www.cygwin.com/


Cygwin includes grep. All the GNU tools amd Unix stuff works great on Windows if you install Cygwin.

http://www.cygwin.com/


dnGREP is an open source grep tool for Windows. It supports a number of cool features including:

  • Undo for replace
  • Ability to search by right clicking on folder in explorer
  • Advance search options such as phonetic search and xpath
  • Search inside PDF files, archives, and Word documents

IMHO, it has a nice and clean interface too :)


dnGREP is an open source grep tool for Windows. It supports a number of cool features including:

  • Undo for replace
  • Ability to search by right clicking on folder in explorer
  • Advance search options such as phonetic search and xpath
  • Search inside PDF files, archives, and Word documents

IMHO, it has a nice and clean interface too :)


I have successfully used GNU utilities for Win32 for quite some time and it has a good grep as well as tail and other handy gnu utils for win32. I avoid the packaged shell and simply use the executables right in win32 command prompt.

The Tail that is packaged is quite a good little application as well.


I have successfully used GNU utilities for Win32 for quite some time and it has a good grep as well as tail and other handy gnu utils for win32. I avoid the packaged shell and simply use the executables right in win32 command prompt.

The Tail that is packaged is quite a good little application as well.


I always use WinGREP, but I've had issues with it not letting go of files.


I always use WinGREP, but I've had issues with it not letting go of files.


Well, beside the Windows port of the GNU grep at:

http://gnuwin32.sourceforge.net/

there's also Borland's grep (very similar to GNU one) available in the freeware Borland's Free C++ Compiler (it's a freeware with command line tools).


Well, beside the Windows port of the GNU grep at:

http://gnuwin32.sourceforge.net/

there's also Borland's grep (very similar to GNU one) available in the freeware Borland's Free C++ Compiler (it's a freeware with command line tools).


I have successfully used GNU utilities for Win32 for quite some time and it has a good grep as well as tail and other handy gnu utils for win32. I avoid the packaged shell and simply use the executables right in win32 command prompt.

The Tail that is packaged is quite a good little application as well.


I have successfully used GNU utilities for Win32 for quite some time and it has a good grep as well as tail and other handy gnu utils for win32. I avoid the packaged shell and simply use the executables right in win32 command prompt.

The Tail that is packaged is quite a good little application as well.


I always use WinGREP, but I've had issues with it not letting go of files.


I always use WinGREP, but I've had issues with it not letting go of files.


Well, beside the Windows port of the GNU grep at:

http://gnuwin32.sourceforge.net/

there's also Borland's grep (very similar to GNU one) available in the freeware Borland's Free C++ Compiler (it's a freeware with command line tools).


Well, beside the Windows port of the GNU grep at:

http://gnuwin32.sourceforge.net/

there's also Borland's grep (very similar to GNU one) available in the freeware Borland's Free C++ Compiler (it's a freeware with command line tools).


I'm the author of Aba Search and Replace. Just like PowerGREP, it supports regular expressions, saving patterns for further use, undo for replacements, preview with syntax highlight for HTML/CSS/JS/PHP, different encodings, including UTF-8 and UTF-16.

In comparison with PowerGREP, the GUI is less cluttered. Aba instantly starts searching as you are typing the pattern (incremental search), so you can experiment with regular expressions and immediately see the results.

You are welcomed to try my tool; I will be happy to answer any questions.


I'm the author of Aba Search and Replace. Just like PowerGREP, it supports regular expressions, saving patterns for further use, undo for replacements, preview with syntax highlight for HTML/CSS/JS/PHP, different encodings, including UTF-8 and UTF-16.

In comparison with PowerGREP, the GUI is less cluttered. Aba instantly starts searching as you are typing the pattern (incremental search), so you can experiment with regular expressions and immediately see the results.

You are welcomed to try my tool; I will be happy to answer any questions.


I wanted a free grep tool for Windows that allowed you to right click on a folder and do a regex search of every file - without any nag screen.

The following is a quick solution based on the findstr mentioned in a previous post.

Create a text file somewhere on your hard drive where you keep long lived tools. Rename to .bat or .cmd and paste the following into it:

@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"

Then browse to the SendTo folder. On Windows 7 browse to %APPDATA%\Microsoft\Windows\SendTo and drag a shortcut of the batch file to that SendTo folder.

I renamed the shortcut to 1 GREP to keep it at the top of the SendTo list.

Things that I'd like to do next with this is pipe the output of findstr through something that would generate an html file so that you could click on each output line to open that file. Also, I don't think it works with shortcuts to folders. I'd have to inspect the parameter and see if it contains ".lnk".


I wanted a free grep tool for Windows that allowed you to right click on a folder and do a regex search of every file - without any nag screen.

The following is a quick solution based on the findstr mentioned in a previous post.

Create a text file somewhere on your hard drive where you keep long lived tools. Rename to .bat or .cmd and paste the following into it:

@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"

Then browse to the SendTo folder. On Windows 7 browse to %APPDATA%\Microsoft\Windows\SendTo and drag a shortcut of the batch file to that SendTo folder.

I renamed the shortcut to 1 GREP to keep it at the top of the SendTo list.

Things that I'd like to do next with this is pipe the output of findstr through something that would generate an html file so that you could click on each output line to open that file. Also, I don't think it works with shortcuts to folders. I'd have to inspect the parameter and see if it contains ".lnk".


UnxUtils is the one I use, works perfectly for me...


UnxUtils is the one I use, works perfectly for me...


I used Borland's grep for years but just found a pattern that it won't match. Eeeks. What else hasn't it found over the years? I wrote a simple text search replacement that does recursion like grep - it's FS.EXE on source forge.

grep fails...

C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>

windows findstr works...

C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG:    AADD(mPRINTER,   TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG:               IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG:                   REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]

I used Borland's grep for years but just found a pattern that it won't match. Eeeks. What else hasn't it found over the years? I wrote a simple text search replacement that does recursion like grep - it's FS.EXE on source forge.

grep fails...

C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>

windows findstr works...

C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG:    AADD(mPRINTER,   TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG:               IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG:                   REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]

My tool of choice is the appropriately named Windows Grep:

  • nice simple GUI
  • supports search and replace
  • can show the lines around the lines found
  • can search within columns in CSVs and fixed-width files

My tool of choice is the appropriately named Windows Grep:

  • nice simple GUI
  • supports search and replace
  • can show the lines around the lines found
  • can search within columns in CSVs and fixed-width files

UnxUtils is the one I use, works perfectly for me...


UnxUtils is the one I use, works perfectly for me...


PowerShell's select-string is similar, it's not the same options and semantics, but it's still powerful.


PowerShell's select-string is similar, it's not the same options and semantics, but it's still powerful.


If you want a simple to use Windows Grep tool, I created one called P-Grep that I have made available for free download from my website: www.adjutantit.com - home menu, downloads.

Windows Grep seemed to have problems with a large number of files, so I wrote my own - which seems more reliable. You can select a folder, right click and send it to P-Grep. The sendto folder gets unpdated during installation.


If you want a simple to use Windows Grep tool, I created one called P-Grep that I have made available for free download from my website: www.adjutantit.com - home menu, downloads.

Windows Grep seemed to have problems with a large number of files, so I wrote my own - which seems more reliable. You can select a folder, right click and send it to P-Grep. The sendto folder gets unpdated during installation.


Another good choice is MSYS. It gives you a bunch of other GNU utilities to allow you to be more productive.


Another good choice is MSYS. It gives you a bunch of other GNU utilities to allow you to be more productive.


PowerShell's select-string is similar, it's not the same options and semantics, but it's still powerful.


PowerShell's select-string is similar, it's not the same options and semantics, but it's still powerful.


GREP for Windows

I've been using it forever and luckily it's still available. It's super fast and very small.


GREP for Windows

I've been using it forever and luckily it's still available. It's super fast and very small.


I've been using AJC Grep daily for years. The only major limitation I've found is that file paths are limited to 255 characters and it stops when it encounters one, rather than just issuing a warning. It's annoying but doesn't happen very often.

I use it on 64-bit Windows 7 Ultimate, so its 64-bit credentials are fine.


I've been using AJC Grep daily for years. The only major limitation I've found is that file paths are limited to 255 characters and it stops when it encounters one, rather than just issuing a warning. It's annoying but doesn't happen very often.

I use it on 64-bit Windows 7 Ultimate, so its 64-bit credentials are fine.


If none of the solulutions is quite what you are looking for, perhaps you could write a wrapper to FindStr that does exactly what you require?

FindStr is pretty good anyway so it should just be knocking a GUI up (if you want it) and providing a few extra features (like combining it with Find to find the count of files which contain a specified string [mentioned above]).

This, of course, assumes you have the requirement, time and inclination to do this!


If none of the solulutions is quite what you are looking for, perhaps you could write a wrapper to FindStr that does exactly what you require?

FindStr is pretty good anyway so it should just be knocking a GUI up (if you want it) and providing a few extra features (like combining it with Find to find the count of files which contain a specified string [mentioned above]).

This, of course, assumes you have the requirement, time and inclination to do this!


I have Cygwin installed on my machine and put the Cygwin bin directory in my environmental path, so the Cygwin grep works like normal in a command line which solves all my scripting needs for grep at the moment.


I have Cygwin installed on my machine and put the Cygwin bin directory in my environmental path, so the Cygwin grep works like normal in a command line which solves all my scripting needs for grep at the moment.


Questions with windows tag:

"Permission Denied" trying to run Python on Windows 10 A fatal error occurred while creating a TLS client credential. The internal error state is 10013 How to install OpenJDK 11 on Windows? I can't install pyaudio on Windows? How to solve "error: Microsoft Visual C++ 14.0 is required."? git clone: Authentication failed for <URL> How to avoid the "Windows Defender SmartScreen prevented an unrecognized app from starting warning" XCOPY: Overwrite all without prompt in BATCH Laravel 5 show ErrorException file_put_contents failed to open stream: No such file or directory how to open Jupyter notebook in chrome on windows Tensorflow import error: No module named 'tensorflow' git clone error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 bash: npm: command not found? Anaconda Installed but Cannot Launch Navigator AttributeError: module 'cv2.cv2' has no attribute 'createLBPHFaceRecognizer' How to install pandas from pip on windows cmd? 'ls' in CMD on Windows is not recognized Copy Files from Windows to the Ubuntu Subsystem Tensorflow r1.0 : could not a find a version that satisfies the requirement tensorflow Kill tomcat service running on any port, Windows python pip on Windows - command 'cl.exe' failed How to install pip3 on Windows? Mount current directory as a volume in Docker on Windows 10 Specifying Font and Size in HTML table Why Local Users and Groups is missing in Computer Management on Windows 10 Home? Command to run a .bat file How do I force Robocopy to overwrite files? Windows- Pyinstaller Error "failed to execute script " When App Clicked How to completely uninstall Android Studio from windows(v10)? Docker for Windows error: "Hardware assisted virtualization and data execution protection must be enabled in the BIOS" How do I kill the process currently using a port on localhost in Windows? Error : getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443 How to add a custom CA Root certificate to the CA Store used by pip in Windows? How to reset the use/password of jenkins on windows? npm ERR! Error: EPERM: operation not permitted, rename CMD (command prompt) can't go to the desktop Xampp-mysql - "Table doesn't exist in engine" #1932 Change drive in git bash for windows "OverflowError: Python int too large to convert to C long" on windows but not mac Visual studio code terminal, how to run a command with administrator rights? ImportError: cannot import name NUMPY_MKL Pip - Fatal error in launcher: Unable to create process using '"' Installing tensorflow with anaconda in windows Where does Anaconda Python install on Windows? PermissionError: [Errno 13] Permission denied How to restart a windows service using Task Scheduler How to install xgboost in Anaconda Python (Windows platform)? NPM stuck giving the same error EISDIR: Illegal operation on a directory, read at error (native) Can't access 127.0.0.1 anaconda - path environment variable in windows Global npm install location on windows?

Questions with grep tag:

grep's at sign caught as whitespace cat, grep and cut - translated to python How to suppress binary file matching results in grep Linux find and grep command together Filtering JSON array using jQuery grep() Linux Script to check if process is running and act on the result grep without showing path/file:line How do you grep a file and get the next 5 lines How to grep, excluding some patterns? Fast way of finding lines in one file that are not in another? How to grep with a list of words How to get the process ID to kill a nohup process? Using the grep and cut delimiter command (in bash shell scripting UNIX) - and kind of "reversing" it? How do I find all files containing specific text on Linux? Checking if output of a command contains a certain string in a shell script Output grep results to text file, need cleaner output How to process each output line in a loop? Find and Replace string in all files recursive using grep and sed How to grep a string in a directory and all its subdirectories? How to concatenate multiple lines of output to one line? Display filename before matching line How to grep and replace How to perform grep operation on all files in a directory? PowerShell equivalent to grep -f Waiting for background processes to finish before exiting script Grep only the first match and stop grep from tar.gz without extracting [faster one] How to show grep result with complete path or file name How to use sed/grep to extract text between two words? How to give a pattern for new line in grep? How to grep recursively, but only in files with certain extensions? grep for special characters in Unix How to check if a file contains a specific string using Bash Delete all local git branches Find the line number where a specific word appears with "grep" Grep regex NOT containing string How to grep for contents after pattern? Using grep to search for a string that has a dot in it How to "grep" for a filename instead of the contents of a file? How to merge every two lines into one from the command line? More elegant "ps aux | grep -v grep" How do I use grep to search the current directory for all files having the a string "hello" yet display only .h and .cc files? Can I grep only the first n lines of a file? grep --ignore-case --only How to make GREP select only numeric values? Parsing json and searching through it Grep characters before and after match? Grep to find item in Perl array What are the differences among grep, awk & sed? How to show only next line after the matched one?