≡ Menu

Findstr command examples and regular expressions

Findstr command on Windows is useful for searching for specific text pattern in files. It’s functionality is similar to the grep command on Linux OS. You can find below the syntax of ‘findstr’ for various use cases.

Search for text/string in a file:

findstr pattern  filename

For example, to search for the string ‘Windows’ in the text file  CLItips.txt, the command would be as below.

findstr Windows CLItips.txt

Note that the above command looks for exactly ‘Windows’. It considers case by default. So if you have a line that has the word ‘windows’, it would not be printed in the output of the above command.

Ignore text case:

You can add /I switch to ignore the case in the search. So if you run ‘findstr windows /I CLItips.txt‘, it does case insensitive pattern matching.

Search for any of the given words

If you want to print the lines having any of the given word set, you can enclose the list of words in double quotes in findstr command.

findstr "word1 word2 word3.."  filename.txt
findstr "Apple Orange"  fruits.txt

This command would print a line if it has  has either the word ‘Apple’ or the word ‘Orange’ or both the words.

Search for pattern with multiple words

findstr /C:"word1 word2 word3..."  filename

/C indicates that the search pattern has to be matched literally.

For 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

You can use regular expressions with findstr /R switch. Typical command would be as below.

findstr /R pattern  filename.txt

Here the pattern can be specified using regular expressions.

Examples:
Search for the occurrence of all words ending with ‘xyz’ in a file.

findstr /R [a-z]*xyz  filename.txt

Search for text in all the files in a current directory

You can use wildcard ‘*” to specify that all the files in a directory should be searched for the given string.
For example, to search for ‘windows’ in all the files in the current directory, you can use the below command.

findstr /I  windows *

To search all the text files in the directory C:\data:

findstr /I windows C:\data\*.txt

Search for multiple strings

If you need to search for multiple strings, then you can do that with the below batch script.

@echo off

for /F %%i in (pattern.txt) do (
echo Files containing %%i
findstr /M /C:%%i /S *.txt
)

‘pattern.txt ‘is the file having the strings(one per line) that need to be searched for. The above command searches only text files. You can customize the findstr command in the script to search in files with other extensions.  Adding ‘/M’ option to the command causes to print only the file names.

Print only the lines where the given string is at the beginning of the line.

You can add /B switch to indicate that the specified string should be in the beginning of the line.

findstr /B /C:windows CLItips.txt

Print only the lines where the given string is at the end of the line

findstr /E /C:windows CLItips.txt

Print line numbers for all the matched lines.

You can add /N switch to the findstr command to print line numbers for the matched lines.

Print only the filenames

finstr /M /C:"pattern"  *.log

This command searches for the pattern in all *.log files, and then prints only the file names having the pattern. Even if a file has multiple occurrences of the pattern, it’s printed only once by findstr.

42 comments… add one
  • Khoi

    How do I use either the FIND or FINDSTR commands to return a list of ASCII files containing a string? For example, I have 2000 ASCII files (.txt) in one or several directories (c:\temp, c:\temp1) and I need the path and file name of files that contain the string “USA”? Thanks.

    • admin

      You can use /S for searching files in all the subdirectories recursively. For your example the command would be as below:
      findstr /S /C:"USA" *
      The above command would print the matched lines also. If you want only the file names to be printed then the command would be:
      findstr /S /M /C:"USA" *

    • admin

      And if you want to search multiple directories then the command would be:

      findstr /S /M /C:"USA" /D:directory1;directory2;directory3 *

      If you want to search only text files then use the below command(Above command would match any file type like .xls, .pdf, .doc etc.)

      findstr /S /M /C:"USA" /D:directory1;directory2;directory3 *.txt

  • Murray

    Hi, great info, thanks.
    TYPO—–This does not seem to run.

    findstr /S /M /I /C:"murray salmon" /F: *

    I want to search all folders on C and F drives for ANY document type that has the words murray and salmon.
    Ideas?

    Thanks

    • Vlad

      You are searching for the phrase “murray salmon”
      Remove /C: and then it would search for murray or salmon – this way you will get at least some results and if desired you can filler out the output of that.

  • Eszter

    Hi,
    Does anybody know how I can display one more line after the matching pattern?
    (In Linux, I can do this with the ‘grep -A1 “pattern” filename’ command)
    Thanks,
    E

  • Steffen

    Hi
    I need to find the string “Milwaukee” in several *.txt files and then move the files to another directory.
    Does anybody know how to do that?
    Thank you

    • Bandusiri Kadinappulige

      Hi,

      You can search for file names that contain your desired string and copy them through a single command. Please check the code below

      Thanks.

      rem — move to the directory you want to do the search, let us say d:\myfolder
      pushd d:\myfolder

      for /f %%i in (‘findstr /s /I /M /C:”Milwaukee” “*.txt”‘) do copy %%i d:\OtherDirectory\%%nxi
      rem — job done, move to original folder
      popd

  • Bill Clinton

    another source of bugs from microsoft

  • Abhishek

    I want to search specific word from text file could be present at any location on my system. I am writing this please tell what is wrong it is not working.

    
    @echo off
    :START
    
    FINDSTR /C:“up to date” C:\Users\G510840\Desktop\dbstatus.txt
    if %errorlevel%==0 
    (
    %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState
    )
    else
    (
    SLEEP -m 100
    goto START 
    )
    
  • bharat

    I want to know, how to search and output only the nth occurrence of pattern matched, using findstr.

  • Samba999

    How do you delete any found files? Thanks :)

  • 1Roso

    To search for multiple strings you can simply do for literal strings:

    findstr /c:”one” /c:”two” /c:”three” filename.txt
    or
    findstr “one two three” filename.txt

    as by default space is the delimiter ;)

  • sunil seelam

    I want to to extract only “file_size=8452858 rows_count=29339” from the below line.
    Actually i have many such files which has multiple entries like below but multimple entries have the same value in a single file.
    Basically i want to extract string matching file_size and then say 40 characters including including file_size.

    file_arrival_date=2017-03-29 file_size=8452858 rows_count=29339 file_type=dat file_source_system

    can some please help.

  • Atr

    I want to search a specific word in a lot of archives, in a lot of subdirectories.

    FINDSTR “word” *

    But in this way, I can search only in the directory, not in all subdirectories.

    • Hassan Iftikhar

      Use /S parameter before your word.

  • SAID

    CAN I ANY ONE HELP ME TO REMOVE EXPRESSION SEPARATOR FROM TEXT FILE. IN CMD LINE.

    EXAMPLE: CONVERT FROM THIS “127,231,653” TO THIS 127231653

  • jonny

    @Atr first do this so you can learn:
    FINDSTR /?

    then use /S like:
    FINDSTR /S “word” *

  • Gerald (Jerry) Achor

    I have the following command to list the last 9 entries of a directory. The entries are numbered. How can I extend that range to over 9 entries? When I specify a range such as [1-10], weird results are shown.
    dir /b /p /w /od|findstr/n ^^|findstr “^[1-9]:”

    My operating system is Windows 10 Home.

  • Vlagen

    Add quotes around pattern and filename and add full directory to filename for accuracy

  • kiddie

    How can i extract the words with in two different strings and put them site by site.?

    File Ex.
    word 1
    word 2
    C:\>some user some word

  • Bunga

    Can we use the findstr command to search a particular string/pattern in batch file too? I mean say if there is a batch file with name a.bat and it has got the string program in that batch file.
    Now if i use the findstr /I “program” * commnad, will that give a.bat file also?.I want to know yes or no.
    And i tried doing that and it is giving the a.bat file but one more doubt for me,while executing this findstr command on batch likes the above, will that findstr internally executes all the commands in that bathc file?just wannna know.

  • glenn

    This is out of date.

    > findstr “—– FAILED” output.txt
    FINDSTR: /- ignored
    FINDSTR: /- ignored
    FINDSTR: /- ignored
    FINDSTR: /- ignored
    FINDSTR: / ignored
    FINDSTR: /F ignored
    FINDSTR: /A ignored
    FINDSTR: /D ignored

  • krishna

    Hi,
    I’m having the line “case IF-1234 this is a text file”

    In my above string I want to print IF-1234. can some one help me how i can achieve this using one single windows command.

  • VIJAY

    Dear team,
    Please help with command(Findstr) for Copying the Line Containes in the input.txt from MasterBasedata.txt and to be writing in new file Output.txt
    Ex. In input file i’ve the srtrins to be searched, Ex Multipal Mobile Number, In MasterBasedata.txt I’ve the detail of Mobile numbers i’m searching for, I need to write the line which is having matching mobile numbers in new file output.txt.

  • Tanushree Gogoi

    I want to capture the 2nd word( i.e. the date) from the 2nd line from the below output of a command(let it be xyz)

    Data source CODA enabled.
    === 03/13/19 01:45:00 PM
    Instance : 0
    GBL_COLLECTOR : Nums 12.02.008
    GBL_INTERVAL : 299

    I am using the below, but getting error,

    For /f “tokens=2” %a in (‘xyz | findstr == ‘) do echo %a

    Can anyone help me find the exact syntax to capture the above ?

    • jox

      In this case, you have to include tokens 2 and 3, and disregard token 1, also suppose 1.txt has your log content:
      for /f “tokens=1,2,3 usebackq” %a in (`type 1.txt ^|findstr “==”`) do echo %b %c
      echo 03/13/19 01:45:00

  • SAL

    hI!
    I use a findstr in a txt file, but in txt have a similar line, for example:

    AAAA
    AAAA
    AAAA

    the findstr return all lines, i need only the first line numer of match, not all.

    • tish

      What command are you using to extract all lines? I am going getting the last line and I need all lines.

  • preythap

    How do I find rows in a file having only commas using findstr and print other lines.
    For eg in below 3 lines I wnat to print only row 1,3 to a new file
    INPUT:
    1,2,3
    ,,
    a,b,c

    OUTPUT:
    1,2,3
    a,b,c

  • batch_dev

    Hi,
    I have couple of lines in a file Test.txt like
    abc = ‘123’
    abcd_dc = ckdhuadh

    I want to search exact string “abc = ”
    I used below command
    echo %abc%| FINDSTR /B “abc =” Test.txt
    But it is taking both lines. Need help

  • Felix

    I have about 150’000 PDF files in many directories. a lot of them have an author of a certain value. I only need the PDF’s that do not have this author
    can I do this with findstr ?

  • cabuj

    How to find lines with space characters? None of the following work:
    echo “ab cd” | findstr ” ”
    echo “ab cd” | findstr /R “[ ]”
    echo “ab cd” | findstr C:” ”
    echo “ab cd” | findstr /R C:”[ ]”
    Nor many other variations I have tried using []’s and /R’s or even “\ ” seem to work.
    Interestingly: findstr C:”b c” and findstr C:” c” print “ab cd” but findstr C:”b ” prints nothing.

    • jox

      Your missed a slash in your third example:
      C:\>echo “ab cd” | findstr /c:” ”
      “ab cd”

  • manai

    i remeber have created command dos that simulate the grep command
    it’s sound like this
    for %m in (*.*) do findstr “stringtofind” %m

    but i cant make it now,
    who can help

  • Hassan Iftikhar

    Hi – I want to search two strings in all sub directories text files. And want to save yes/no value (depending on the availability of these strings) in a boolean variable using windows batch command. This will help me to make my jenkins build stable/unstable.
    Thanks in advance!

  • Naveen

    Hi,
    I’m writing a script where I want to search for particular pattern present in a file, so the result which I’m looking for is, should start with a ‘space’ or a ‘(‘ and ends with a semicolon. could you pls help me?
    Thanks.

  • mghosh

    this is not working
    findstr /S /I /X /N “include” *.c*

  • jui

    i want to compare file name. for eg. if file contains today’s date then do not delete it.
    How to use findstr for this. is there any other function ?

  • Robin Haskell

    Is there a way to do this grep command with “Windows” FINDSTR

    grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" c:\1\raw_example_.TXT > output.txt
  • how to use findstr in .xlsx file ?

  • Vamsi krishna

    in this data:
    a|b|c|d| :: how to get the value of ‘d’ using any of the windows tools when piped

Cancel reply

Leave a Comment