Suppose I'm searching a class JFactory
inside a folder and it's sub-directories.
How can I file that file which contains class JFactory
?
I don't want to replace that word but I need to find that file that contains class JFactory
.
Search All Files in Directory To search all files in the current directory, use an asterisk instead of a filename at the end of a grep command.
You can use grep command or find command as follows to search all files for a string or words recursively.
An easy way to do this is to use find | egrep string . If there are too many hits, then use the -type d flag for find. Run the command at the start of the directory tree you want to search, or you will have to supply the directory as an argument to find as well. Another way to do this is to use ls -laR | egrep ^d .
Alternatively referred to as recursive, recurse is a term used to describe the procedure capable of being repeated. For example, when listing files in a Windows command prompt, you can use the dir /s command to recursively list all files in the current directory and any subdirectories.
:vimgrep /JFactory/ **/*.java
You can replace the pattern /JFactory/
with /\<JFactory\>/
if you want full word match. :vim
is shorthand for :vimgrep
.
If JFactory
or \<JFactory\>
is your current search pattern (for example you have hit *
on one occurrence) you can use an empty search pattern: :vimgrep // **/*.java
, it will use last search pattern instead. Handy!
Warning: :vimgrep
will trigger autocmds if enabled. This can slow down the search. If you don't want that you can do:
:noautocmd vimgrep /\<JFactory\>/ **/*.java
which will be quicker. But: it won't trigger syntax highlighting or open gz
files ungzipped, etc.
Note that if you want an external program to grep your pattern you can do something like the following:
:set grepprg=ack :grep --java JFactory
Ack
is a Perl-written alternative to grep. Note that then, you will have to switch to Perl regexes.
Once the command of your choice returned, you can browse the search results with those commands described in the Vim documentation at :help quickfix
. Lookup :cfirst
, :cnext
, :cprevious
, :cnfile
, etc.
2014 update: there are now new ways to do that with the_silver_searcher
or the_platinum_searcher
and either ag.vim
or unite.vim
plugins.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With