14

I have a long text file

gallery-dl -g -i w4b027.txt >
gallery-dl -g -i a4b028.txt >
gallery-dl -g -i b4b029.txt >
gallery-dl -g -i c4b030.txt >
gallery-dl -g -i d4b031.txt >
gallery-dl -g -i w4b032.txt >
gallery-dl -g -i w4b033.txt >
gallery-dl -g -i w4b034.txt >
gallery-dl -g -i w4b035.txt >
gallery-dl -g -i w4b036.txt >
gallery-dl -g -i w4b037.txt >
gallery-dl -g -i w4b038.txt >
gallery-dl -g -i w4b039.txt >
gallery-dl -g -i w4b040.txt >

I want to make it

gallery-dl -g -i a4b027.txt > a4b027x.txt
gallery-dl -g -i b4b028.txt > b4b028x.txt
gallery-dl -g -i c4b029.txt > ...

the first text file to the second text file with suffix "x".

1
  • Notepad++ never ceases to amaze with the variety of methods below outlining how one can perform this operation. Feb 16, 2021 at 19:11

5 Answers 5

22
  • Ctrl+H
  • Find what: ^.+\h(\S+)(\.txt) >\K
  • Replace with: $1x$2
  • CHECK Wrap around
  • CHECK Regular expression
  • UNCHECK . matches newline
  • Replace all

Explanation:

^           # beginning of line
  .+          # 1 or more any character but newline
  \h          # horizontal space
  (\S+)       # group 1, 1 or more non-space character
  (\.txt)     # group 2, extension .txt
   >          # a space and > character
  \K          # forget all we have seen until this position

Replacement:

 $1         # a space and content of group 1 (filename)
x           # letter x
$2          # content of group 2 (extension)

Screenshot (before):

enter image description here

Screenshot (after):

enter image description here

11
  • May I know why this has been downvoted?
    – Toto
    Feb 15, 2021 at 9:39
  • 2
    Not the down-voter, but when you try and show someone a regular expression, you should use the least amount of "magic" as possible. This answer does a great job of using match characters only where needed and is much easier to read (but they should have explained what little regex they used, and theirs is actually wrong... I'm just pointing out the simplicity). I use regex all the time, and I have no idea what \K does or why its needed here.
    – JPhi1618
    Feb 15, 2021 at 15:02
  • 1
    @JPhi1618: I prefer effciency than readability, and this regex is not complex. If you want to see a really complex regex, have a look at regex for RFC822 email address.
    – Toto
    Feb 15, 2021 at 17:50
  • 2
    @Toto why do we need to "forget all we have seen until this position" at the very end of the regex? What problem with the rest of the regex is this \K solving?
    – Hellion
    Feb 15, 2021 at 23:40
  • 1
    I agree that the regex in the answer is overly complex. (\S+)\.txt > -> $1.txt > $1x.txt Uses way fewer regex operations and does the job just fine. \K is highly nonstandard and barely gains anything here and \h doesn't gain anything compared to a simple space.
    – Chronial
    Feb 16, 2021 at 16:06
45

You can hold alt to select the file names in block mode. Then copy and paste them to the desired location and then modify all rows at once.

It's easier to describe with a gif than with words:

Notepadd++ block mode copy and paste

Instead of using the mouse, you can also hold shift+alt and then use the arrow keys to select in block mode. You can also use the page up/down keys to quickly select whole columns in larger files.

12
  • 5
    This will work only if the filenames have the same length.
    – Toto
    Feb 14, 2021 at 15:25
  • 7
    For someone unfamiliar with regular expression, I suspect this method will cause less problems...
    – Nelson
    Feb 14, 2021 at 17:22
  • 1
    Upvote. This is much more versatile solution than the complex replace functions in other answers
    – Jan Doggen
    Feb 14, 2021 at 20:58
  • 1
    @Toto this works with variable length lines too because you can make the alt+selection way to the right of everything. It doesn't have to be immediately on the last character of the line. You'll end up with a bunch of white space which you can find and replace but that is easy.
    – Brad
    Feb 15, 2021 at 15:35
  • 2
    @Brad: You can't add the x before the extension if the filenames haven't the same length.
    – Toto
    Feb 15, 2021 at 16:46
19

Another way to simplify repetitive tasks with Notepad++ is with the Macro feature.

The below steps will use keyboard keystrokes which the macro will repeat for you...

  1. Open the long text file and put the mouse cursor to the very beginning far left of the first line

    enter image description here

  2. Select Macro | Start Recording from the Notepad++ upper menu bar

    enter image description here

This is where you start the keyboard steps to complete the task for the first line

  1. Hold down on Ctrl and press the key 7 times

  2. Hold down on Ctrl+Shift and press the key 3 times

  3. Press Ctrl+C

  4. Press the End key 1 time

  5. Press Ctrl+V

  6. Hold down on Ctrl and press the key 2 times

  7. Press the X key 1 time

  8. Press the key 1 time

  9. Press the Home key 1 time

This is where you stop the keyboard steps that completed the task for the first line

  1. Select Macro | Stop Recording from the Notepad++ upper menu bar enter image description here

You now have the macro built so you can start it and play it to the end of the file to perform those actions until the last line and it'll take care of the repetition for you.

So just stay on the second line of your document after pressing the number 11 Home key and...

  1. Select Macro | Run a Macros Multi Times... from the Notepad++ upper menu bar

    enter image description here

  2. Check Run until the end of the file and then press Run

    enter image description here

Output Results

gallery-dl -g -i w4b027.txt > w4b027x.txt
gallery-dl -g -i a4b028.txt > a4b028x.txt
gallery-dl -g -i b4b029.txt > b4b029x.txt
gallery-dl -g -i c4b030.txt > c4b030x.txt
gallery-dl -g -i d4b031.txt > d4b031x.txt
gallery-dl -g -i w4b032.txt > w4b032x.txt
gallery-dl -g -i w4b033.txt > w4b033x.txt
gallery-dl -g -i w4b034.txt > w4b034x.txt
gallery-dl -g -i w4b035.txt > w4b035x.txt
gallery-dl -g -i w4b036.txt > w4b036x.txt
gallery-dl -g -i w4b037.txt > w4b037x.txt
gallery-dl -g -i w4b038.txt > w4b038x.txt
gallery-dl -g -i w4b039.txt > w4b039x.txt
gallery-dl -g -i w4b040.txt > w4b040x.txt

Supporting Resources

3
  • @Roxion ... Here's a different approach I just added for a different and simple Notepad++ feature you can use. This doesn't require regular expressions at all and it helps make repetitive tasks with text documents more simplified too. Feb 14, 2021 at 2:40
  • 3
    Upvote. This is easier, more versatile, and less error prone than the regex replace functions in other answers. Once you master keyboard macro possibilities (including 'repeat till end of file') you can do so much with Notepad++ ...
    – Jan Doggen
    Feb 14, 2021 at 20:57
  • slightly different (and better) keystroke sequence than I was going to post. +1
    – Kevin
    Feb 16, 2021 at 16:49
11

Notepad++ search and replace:

Find what: gallery-dl -g -i (\w+).txt >
Replace with: gallery-dl -g -i \1.txt > \1x.txt

It will need to be modified if not all the lines terminate with a blank.

enter image description here

0
1

Another solution is to use Excel (or any other spreadsheet of your choosing). This may take a few more steps but it supports filenames of varying lengths, so it's more versatile. (You can do lots of other similar operations this way, so it's a useful technique to have in your toolkit even if some of the other suggestions are more expedient in this specific case).

  • Copy your text into columns (use the Import Wizard to delineate by spaces and in this case also "."s).
  • Insert a column between your filename and the column containing "txt", and fill it with "."s. Also add columns everywhere you want a space and fill them each with a single space, or you'll lose your spaces later on.
  • Copy the three columns containing filename, ".", and "txt" and paste them to the right of your ">" column. (Add another column of spaces in between.)
  • Insert another column between filename and ".", and fill it with "x"s.
  • Copy the entire table and paste it back into Notepad++.
  • Do a Find/Replace, make sure you are in "Extended" mode, and replace all "\t" with nothing to delete all the tabs.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.