This is original link of the question. Please note I focus on programming for large projects. I need search/grep/modify files scattered in different places without documentation.

If your use case is different, a embedded file explorer may be a better choice

Tools I use to replace a file explorer ido-find-file (emacs), just type any characters, it will fuzz search matched file in parent/sibling/current/or-whatever directory. helm-find-file (emacs), this one use regular expression and has bigger window recentf and helm (emacs), I use regular expression open recent opened files. ctags, gtags or whatever tag tools (CLI tool), as mentioned by other people I also use lots of bash functions written by myself, those functions are trivial, but combined with a wonderful tool called percol, they become really powerful. I use some CLI clipboard tool so I can easily share the file path between terminal/emacs/firefox. there is also a emacs bundled feature called speedbar, which is similar to the file explorer, I used it once, but it does not fit in my ninja style ;) It's fine but the UI is almost same to those average text editors. I also write some elisp snippets, for example, convert absolute path to relative path; given one relative path, output one absolute path, etc … there is also some git based emacs plugin: you can search file under the project root directory. there is a CLI tool called fasd which can let you interactively select the file or folder you recently visited. many other tools, plug-ins, code snippets I can use …

Use case I need search a big project for a certain library (it's a freemarker file I need include) whose full path I don't know, I just search the API's name by type: "gef keyword *". gef is my bash function based on grep. matched files are displayed instantly (grep is much more quick than IDEs, BTW) in a interactive console filter (use percol), I type a regular expression to filter file name and press enter the full path is in clipboard now, then I type ":e Shift-insert" to open that file. This is the most difficult case, I usually strike less keys and not get out of Emacs. If i need insert this file's relative path, I press a hot key and another emacs plugin will correctly convert absolute path to relative one (relative to the file I'm editing in Emacs) and insert it into my editor.