Community
    • Login

    Automatically selecting files with searched word in it

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    4 Posts 2 Posters 1.0k Views 1 Watching
    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 Offline
      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 Offline
        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 Offline
          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 Offline
            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

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better 💗

            Register Login
            • First post
              Last post
            The Community of users of the Notepad++ text editor.
            Powered by NodeBB | Contributors