Community
    • Login

    Automatically selecting files with searched word in it

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    4 Posts 2 Posters 635 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Lorenzo CarrisiL
      Lorenzo Carrisi
      last edited by

      Hi guys, I’m fairly new with this program and I’ve got a question.
      I searched for a word in a directory, and it found occurrences in 220 files. Is there a way to automatically select and copy/paste those files in another directory?
      Thanks a lot!

      Alan KilbornA 1 Reply Last reply Reply Quote 0
      • Alan KilbornA
        Alan Kilborn @Lorenzo Carrisi
        last edited by Alan Kilborn

        @Lorenzo-Carrisi

        Automatically? No.

        But with a “few” steps, not so hard:

        • right-click in the Find result panel whitespace (anywhere)
        • choose Select All from the popup menu
        • press ctrl+c to copy
        • create a new file called test.bat in your desired destination directory
        • open test.bat in Notepad++
        • press ctrl+v to paste into N++'s buffer for test.bat
        • choose Edit (menu) > Line Operations > …and pick the topmost sort option

        Your file buffer should now have a group of lines at the top that start out with Line and a group of lines at the bottom that start with Search. You want the grouping of lines in the middle, the ones that start out with actual pathnames and end with (# hits)

        • manually remove the Line lines at the top of the file
        • manually remove the Search lines at the bottom of the file
        • run this regular-expression replace on the whole file: Find: (?-i)\s\(\d+\shits?\)(?=\R) Repl: " .
        • run this regular-expression replace on the whole file: Find: ^\s+ Repl: copy "
        • press ctrl+s to save test.bat
        • get a cmd prompt in the directory containing test.bat
        • type test at the prompt and press Enter
        • WATCH THE CMD OUTPUT AS ALL OF YOUR FILES ARE COPIED INTO THAT SINGLE DIRECTORY!
        • delete the test.bat file

        Note that this won’t work so well if any files have the same name (just the name.ext part) which can happen. Be careful.

        Wow. I usually don’t give explanations like that. I think I am channeling @guy038 while he is off fishing. :)

        1 Reply Last reply Reply Quote 3
        • Lorenzo CarrisiL
          Lorenzo Carrisi
          last edited by

          I didn’t quite manage to get the last part right, anyway just simply having the paths displayed like that helped me save quite a bit of time.
          Thanks a lot!

          1 Reply Last reply Reply Quote 2
          • Alan KilbornA
            Alan Kilborn
            last edited by

            @Lorenzo-Carrisi

            Good that you got something you could use from that!

            Actually, this is probably a good opportunity to show off macros in Notepad++.

            First, do some (one-time) setup:

            • Press the toolbar button for starting macro recording
            • In an editing tab view, press an arrow key to move the caret (this is just a dummy action)
            • Press the toolbar button for stopping macro recording
            • Press the toolbar button for saving a recorded macro; give it the name Bat file from Find results and save it
            • Exit Notepad++
            • Restart Notepad++
            • Locate your shortcuts.xml file and open it in Notepad++
            • Do a find on Bat file from Find results and you should be left looking at something like this:
            <Macro name="Bat file from Find results" Ctrl="no" Alt="no" Shift="no" Key="0">
                <Action type="0" message="2306" wParam="0" lParam="0" sParam="" />
            </Macro>
            
            • Replace the Action line with the following block, making the indent level of the block match that of the old Action line:
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="(?-s)^Search.+\R" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1702" wParam="0" lParam="770" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="(?-s)^\tLine.+\R" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1702" wParam="0" lParam="770" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="\s\(\d+\shits?\)$" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam='&quot; .' />
            <Action type="3" message="1702" wParam="0" lParam="770" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
            <Action type="3" message="1601" wParam="0" lParam="0" sParam="^\s+" />
            <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
            <Action type="3" message="1602" wParam="0" lParam="0" sParam='copy &quot;' />
            <Action type="3" message="1702" wParam="0" lParam="770" sParam="" />
            <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
            
            • Save the shortcuts.xml file
            • Exit Notepad++
            • Restart Notepad++

            That’s the end of the one-time setup. That will remain until you delete the macro created.

            To use it, each time you need to:

            • Run a Find-in-Files search that results in several hit files
            • Copy and paste the Find-result panel results (per the earlier instructions on how to do that) into an empty Notepad++ tab (an empty file called test.bat might be appropriate!)
            • Go to the Macro menu and choose Bat file from Find results from near the bottom; you should observe your file of search results has changed into a bunch of copy batch file commands (this step “runs” the macro consisting of several replacement operations!)
            • Save the file
            • Continue from the earlier instructions at step get a cmd prompt in the directory containing...
            1 Reply Last reply Reply Quote 2
            • First post
              Last post
            The Community of users of the Notepad++ text editor.
            Powered by NodeBB | Contributors