Suggestion: Find in Files from command line



  • Notepad++ already has a very powerful Find in Files functionality (Ctrl+Shift+F).
    What do you think about allowing Notepad++ to be started in the Find in Files mode? In this mode, Notepad++ would start with its Find in Files dialog shown with some values specified in the command line.
    Here are more details. Let’s assume Notepad++ supports these new command line switches:

    -ffwhat="Text to find in files"
    -ffwith="Text to replace with in files"
    -ffdir="Directory to start the search from"
    -ffmask="File masks/filters"
    

    If at least one of these arguments is specified, Notepad++ would start with its Find in Files dialog shown.
    For example, if just “-ffdir” is specified, the Find in Files dialog will contain the “Directory” value set, whereas the “Filters” value will not be changed (i.e. it will contain its last/previous value, whatever it was) and both “Find what” and “Replace with” values will be empty.
    If just “-ffwith” is specified, the Find in Files dialog will have the “Replace with” value set, whereas the “Directory” and “Filters” values will not be changed (i.e. it will contain its last/previous value, whatever it was) and the “Find what” value will be empty.
    if just “-ffwhat” is specified, the Find in Files dialog will have the “Find what” value set, whereas the “Directory” and “Filters” values will not be changed (i.e. it will contain its last/previous value, whatever it was) and the “Replace with” value will be empty.
    Usage example:

    notepad++.exe -multiInst -nosession -ffdir="C:\Temp\Documents" -ffmask=*.txt -ffwhat="Some text"
    

    If it looks like a good suggestion, let’s discuss the design here. E.g. what exact names to use for the command arguments, what exact behavior to expect from Notepad++, what other options we may want to set, etc.



  • @Vitaliy-Dovgan said in Suggestion: Find in Files from command line:

    If it looks like a good suggestion, let’s discuss the design here

    I don’t think it’s a bad suggestion. I just doubt I personally would ever use it. (My workflow has Notepad++ nearly always open, so command-line options don’t do much for me.)

    However, if it were to be implemented, I like the ff prefix for all of them. They don’t get horrendously long (-findInFilesDirectory, etc). But I might be tempted for -ffsearch or -fffind and -ffreplace, as I think those would be easier to remember than -ffwhat and -ffwith.

    Should there be -ffmode=xxx which accepts normal, extended, and regex ? And -ffcase and -ffnewline for case sensitivity and dot-matches-newline toggles (either with 1/0 values, or maybe on/off strings)?



  • This idea actually comes from how the “Search (in files) in separate process” is implemented in Total Commander. In fact, it runs another instance of totalcmd.exe with specific command line arguments that turn a new instance of Total Commander into a search window instead of a file manager window.
    So I was wondering whether Notepad++ community would be interested in something similar in Notepad++. Don’t forget that Total Commander only shows the file list in its search results while Notepad++ shows the file list plus the matches in each file.
    If, however, there is no high interest in this feature in Notepad++ from Notepad++ community (and especially from developers team), then I would not see much sense in creating of the corresponding feature request and investing time into investigations and development.



  • The already existing solutions for searching in files are:



  • @Vitaliy-Dovgan said in Suggestion: Find in Files from command line:

    The already existing solutions for searching in files

    Well, I think in reality that list is going to be a bit of a long one.

    Another one for the list is PowerGREP. It’s certainly not “free”, but I don’t know if a list of these types of alternatives should only list free programs?

    Actually, I don’t use PowerGREP any longer. What I’ve found is that RegexBuddy (also not free) has a little “grepper” built into it that is very capable and produces output much like Notepad++'s Search results window. No command line options, though, but in truth, I don’t think I’ve ever had a need for such a thing.



  • @Alan-Kilborn

    I’m using Filelocator Lite, which is now called AgentRansack. Nice, but something built into Npp might make me uninstall it.



  • @Vitaliy-Dovgan said in Suggestion: Find in Files from command line:

    The already existing solutions for searching in files are:

    AstroGrep ( http://astrogrep.sourceforge.net/ ) - only searching, no replacing, wide command line arguments
    Searcher ( https://sourceforge.net/projects/searcher/ ) - only searching, no replacing, no command line arguments
    Text Crawler ( https://www.digitalvolcano.co.uk/textcrawler.html ) - searching & replacing, wide command line arguments

    @Alan-Kilborn

    Another one for the list is PowerGREP.

    @Ekopalypse

    I’m using Filelocator Lite

    Am I the only one using good old command line grep?

    Cheers.



  • @Michael-Vincent

    ‘grep’ is not recognized as an internal or external command,
    operable program or batch file.

    ?? hmmm … maybe that is the reason why I’m not using it :-D



  • @Michael-Vincent ,

    Am I the only one using good old command line grep?

    No. I personally use the old gnuwin32 grep, though it wouldn’t surprise me if there were more modern (or 64bit) versions ported to windows executables.

    @Ekopalypse (sorry for the snarky reply, but your phrasing required such)

    ‘grep’ is not recognized as an internal or external command,
    

    The same errors happen for me when I try to run an application on my PC that I haven’t installed – like, for instance, the FileLocator/AgentRansack that you mentioned:

    >where filelocator
    INFO: Could not find files for the given pattern(s).
    
    >where agentransack
    INFO: Could not find files for the given pattern(s).
    
    >filelocator
    'filelocator' is not recognized as an internal or external command,
    operable program or batch file.
    
    >agentransack
    'agentransack' is not recognized as an internal or external command,
    operable program or batch file.
    
    >where grep
    C:\usr\local\bin\grep.exe
    
    >grep --version
    GNU grep 2.5.4
    
    Copyright (C) 2009 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    

    maybe that is the reason why I’m not using it :-D

    That’s not likely the reason, because it’s as easy (or easier) to install gnuwin32 grep as it is to install the FileLocator/AgentRansack.



  • Ahh - I had understood that this was a system tool.



  • @PeterJones
    @Ekopalypse

    I have grep.exe installed in my C:\usr\bin\ directory along with Git for Windows (which supplies it’s own grep), but I prefer the GnuWin32 version.

    Cheers.



  • Personally, I tend to keep my command line and GUI programs separate. I’ll let a GUI program like Notepad++ do what it’s good at, and a command-line tool like grep do what it’s good at. If I want command-line power, I use a command-line tool (and usually something written originally for linux and ported to windows); when I want a graphical environment, I use a native win32 application.

    Thus, if I’ve already got one of the files I want to search open in Notepad++, I will pull up the Find In Files and have it recursively search the directory structure relative to the current file. But if I have something I’m trying to find elsewhere (more often the case), or if I want a lot of fine control on command-line-style arguments, I’m more likely to pull out grep. (which explains why I’m not likely to use the -ff... args that Vitaly suggested.

    But I can see for someone who prefers to always use a GUI for their grepping results, whether started from the GUI or from the command line, I could see the benefit of having that grepping be part of Notepad++ rather than having a specialty GUI app like those mentioned by others.



  • …but something built into Npp might make me uninstall it.

    I think we’re overlooking something.
    Notepad++ isn’t a great searching tool.
    There, I’ve said it. :-)
    I await the flames.



  • …grep…

    Maybe grep isn’t great for multiple directories that aren’t in the same tree? Too much to specify, or maybe there’s a nice way to do something like that via a config file?

    Specifying such a thing is problematic even for the best tools.
    It is a weakness for Notepad++ as well.

    Plus grep uses yare (yet another regex engine).
    The grepper in RegexBuddy allows me to pick the regex engine I want to use (typically I set it to the same one as N++, i.e., Boost).

    <start_unpaid_commercial>
    RegexBuddy really is a great value, for I think 35USD.
    </end_upaid_commercial>



  • @Alan-Kilborn - to quote the famous “how dare are you??” :-D

    To be honest, I never had a problem with it. Yes, there are better solutions, like the one I posted, but for what I use it for, it’s good enough. Maybe because I only use utf8 encoded files.



  • @Ekopalypse said in Suggestion: Find in Files from command line:

    how dare are you?

    :-)

    N++'s searching is slow, and as previously mentioned, how does one search several different trees? Also, you can’t do anything else with it while it is conducting a search.

    It’s perfectly fine for most things (interactive find-next, find all in current file, …), but when you get into searching a lot of files, well there are other and better ways to skin that cat.

    And since that is what the beginning of this thread was about (automating an already not-great feature), I say “meh” to the original idea. Not something I’d use. But I respect those that would, and their opinions on the topic.



  • @Alan-Kilborn

    The idea is great, because then I can start a new instance easily and it is not blocking my current instance.



  • @Ekopalypse said in Suggestion: Find in Files from command line:

    The idea is great, because then I can start a new instance easily and it is not blocking my current instance.

    If I’m considering “calling out” like that, I’ll call out to a more capable searching program. :-)
    And when that more-capable program shows me the hits and I want to go to one of them, I’ll have that program call back into Notepad++ to take me to the file and hit line.



  • @Alan-Kilborn

    I’m not sure I understand, but in the end it depends on personal preference anyway.
    I mean, if I use Npp because of its search function, then I think I’m using the wrong tool for the job.
    On the other hand, if I mainly edit, then it’s good to have a powerful search function like Npp has, and if it can be easily launched from Npp and doesn’t block me - all the better.



  • @Ekopalypse

    Well, in theory we could put together all we know and create the desired functionality via scripting…if it isn’t picked up natively. There’d be a lot of individual pieces, but I can’t think of anything that would be a “stopper”.


Log in to reply