I installed cmder shell emulator for Windows.

Works fine but I can't use Unix's find command. Apparently when I type:

'find .'

in the terminal it tries to use the Windows' FIND and output this error:

FIND: Parameter format not correct

I'd really like to use find, any hint on how to get it working?

  • 1
    You would need to make whichever directory find is in appear before C:\Windows\System32 (where Windows' find lives) in the PATH environment variable. This is generally considered not a great idea to do globally as it tends to confuse other programs that expect a standard Windows environment. Rather, you should see if you can set a startup script in Cmder, and make the script do something like set PATH=C:\path\to\folder\with\unix\find;%PATH%
    – Bob
    Commented Jun 14, 2017 at 10:15
  • I don't know cmder, but in Linux/Unix which -a find will show all programs which could execute with the find command. Identify the Unix find. Then use its full path, or re-arrange the order of PATH directories, or set an alias, if cmder supports this; you could also rename the Windows find.exe to wfind.exe. If it emulates bash, then you can use the in-built type -a find.
    – AFH
    Commented Jun 14, 2017 at 10:20
  • 1
    Possible duplicate of How do I rename C:\Windows\System32\convert.exe?
    – phuclv
    Commented Jun 15, 2017 at 2:31
  • @AFH which -a find returns /c/WINDOWS/system32/find /usr/bin/find. Unfortunately, though, running /usr/bin/find yields The system cannot find the path specified.. It seems the actual windows-style path is needed here. Running type launches the windows type, and it appears cmder does not provide the unix-like version.
    – simlev
    Commented Jun 15, 2017 at 8:15

4 Answers 4


Simplest solution is to create an alias to the find executable within the cmder installation folder:

λ which find
λ find --help
FIND: FIND: Parameter format not correct
λ alias find=C:\Files\Programs\cmder\vendor\git-for-windows\usr\bin\find.exe $*
λ find --help
Usage: /usr/bin/find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

May I suggest you also try out Cygwin where, among other things, find works out of the box. That is what I used to ascertain the location of the cmder-supplied find.exe.

Kudos to @Bob and @AFH for their insightful comments, and to @Lưu Vĩnh Phúc for suggesting another dead-simple solution:

rename the *nix find to another name like fnd.exe

This might actually be preferrable over creating an alias, because cmder aliases don't work in Windows 10 unless Use legacy console is selected in cmd properties (see how to do it).

  • Thanks for the suggestion. Seems the best way to go. I normally use cygwin when on windows but for working reasons I am forced to cmder right now. I will try this asap!
    – Heisenbug
    Commented Jun 14, 2017 at 15:28
  • @Heisenbug cmder has the obvious advantage of being portable and not needing installation to be performed by a privileged user.
    – simlev
    Commented Jun 14, 2017 at 15:39
  • you can also simply rename the *nix find to another name like fnd.exe
    – phuclv
    Commented Jun 14, 2017 at 16:31
  • I renamed the unix version, to avoid modifying windows native stuff. But thanks, what I was really missing was the folder where those commands where stored and your answer helped me.
    – Heisenbug
    Commented Jun 15, 2017 at 8:05
  • Isn't gnu find normally called gfind on non-gnu systems?
    – user27163
    Commented Feb 26, 2018 at 22:43

Cmder\vendor\git-for-windows\usr\bin is added to the PATH by Cmder\vendor\init.bat. Unfortunately, it's added at the end of the PATH, so Windows's find.exe is found first.

Fortunately, it's easy to fix. Just add this line inside Cmder\config\user-profile.cmd:

set "PATH=%GIT_INSTALL_ROOT%\usr\bin;%PATH%"

  • 1
    Jerem is referring to the windows find here: C:\Windows\System32\find.exe. In the System variables path it looks like %SystemRoot%\system32, usually towards the top. Commented Nov 24, 2021 at 19:43

An addition to previous answers:

A) I recommend using the CMDER_ROOT variable, accessible either as %CMDER_ROOT% or $CMDER_ROOT depending on environment (see .sh example and note about %GIT_INSTALL_ROOT% below).

B) You can define your aliases in Cmder's user_aliases.cmd like so:


fnd=%CMDER_ROOT%\vendor\git-for-windows\usr\bin\find.exe $*

to be added into %CMDER_ROOT%\config\user_aliases.cmd.

C) For those who need to use find in their cross-OS scripts, this is a workaround: In your foo.sh to be run either on Windows and Linux use:

if [ "$(command -v find)" = "/c/WINDOWS/system32/find" ]; then
    # Windows

# Your command here, for example:
$FIND_CMD my-folder -type f -not -iname 'exclude-me.md'

Note: %GIT_INSTALL_ROOT% mentioned above may be different than what you want, for example in my case:

λ echo %CMDER_ROOT%

C:\Program Files\Git

Note 2: While previous answers are correct in their explanation and proposed solutions, in my case more details were needed – which I have tried to put into my answer.


I have installed smartgit in windows

Then I add C:\Program Files (x86)\SmartGit\git\bin (my smartgit folder) into path environment

press win+r enter bash. in the bash shell you can use find command. in Cmder you also can type bash to use it

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .