What's the Best grep Alternative on Windows?

May 2024 ยท 3 minute read

Quick Links

Linux's grep utility is a favorite among many sysadmins for its simple searching ability and familiar syntax. It's not available on Windows however, so you'll have to either use alternatives, or install third-party grep tools to emulate it.

dnGrep

grep has many third-party implementations for Windows, and while it's not exactly Linux grep, it will function largely the same. If you want a native Windows solution using CMD and Powershell, you can use other tools like FindStr, covered down below.

One of the best implementations is dnGrep, which also features a rich GUI if you'd like to use it outside the command line. You can install it from WinGet, Window's new built-in package manager, or install it from Github.

winget install -e --id dnGrep.dnGrep

This will prompt you for the installation, click allow and it should install fairly quickly.

You can open the dnGrep interface from the start menu search, but one of the nice features is the addition to the right click menu, which can be started from file explorer:

You'll see an interface with options for every grep feature, including regular expressions, find and replace, and most common flags. You can also configure the "Search In" settings to filter which files are picked up by the search.

Once you hit search, all the search results will be listed in the GUI panel below. You can open up each file to inspect it in the sidebar.

This is a great experience, but if you'd like to use it from the command line, that is also possible. Because it's a Windows app though, the CLI isn't the same as Linux grep, so you may have to adjust your scripts.

Using Actual grep From WSL or Git Bash

Of course, if you have Windows Subsystem for Linux (WSL) installed, you have access to a pure Linux terminal. This will likely include grep and similar tools. WSL has full interop with Windows, though does have some performance implications that come with being virtualized.

If you'd like to install WSL, you can read our guide to setting it up to learn more. Alternatively, you can use Git Bash, which is an emulation layer for a better CLI experience, and includes a grep implementation, albeit with limited functionality.

Once installed, you can use grep exactly like you would on a normal system, though keep in mind your Windows files may be in a place like /mnt/c/Users/.

Using FindStr

If you need a quick grep alternative that works out of the box, PowerShell's FindStr command will work. It works from both CMD and PowerShell scripts, and doesn't require anything to be installed.

findstr foo *

You can also use it with basic regular expressions by using the /r flag:

findstr /r "b.*" *

ncG1vNJzZmivp6x7qbvWraagnZWge6S7zGibnq6fpcBww8eaq6xlpJ2ybq7ErKtmn6KavW6ty62cq6aRqba3sYyopWavmaOxsMPSaA%3D%3D