On 11/12/11 09:57, john Culleton wrote:
Tryig to help a lister on another group rename a few thousand
files. As the last step I need to line number a text file but then move
the line number to the end of each line. In other words go from lines
like

1234 mv oldfilenane newprefix
to
mv oldfilename newprefix1234

Adding the suffix in a subsequent step is trivial:
:%s/$/.jpg/

Well, the entire process (including the initial numbering) could be done in one step:

  :%s/$/\=submatch(0).line('.').'.jpg'

which will append both the line# and the .jpg extension.


However, if you must move pre-existing line-numbers to the end, I'd recommend

  :%s/^\(\d\+\)\s*\(.*\)/\2\1.jpg


If you want to do it purely on the command-line, assuming files.txt has the lines "mv oldfilename newprefix" in it, you can use

 sed -n 'p;=' numbers.txt | sed 'N;s/\n//;s/$/.jpg/'

to number the lines, then move the line numbers up a line and append the .jpg extension. The entire result, if it meets your approval can then just be piped to a shell to execute them:

 sed -n 'p;=' numbers.txt | sed 'N;s/\n//;s/$/.jpg/' |sh

Hope this gives you some options,

-tim




--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to