Friday, November 26, 2010

Re: edit multiple files under multiple directories/folders

On 11/26/2010 08:36 PM, Kaushal Shriyan wrote:
> In my home folder I have 6 tomcat directories under
> /home/kaushal/tomcat0......6
>
> Under each of these tomcats there are sub folder conf and
> inside these conf there is a file by the name server.xml so
> for example I have
> tomcat0,tomcat1,tomcat2,tomcat3,tomcat4,tomcat5 so i need to
> edit server.xml and set port numbers for tomcat0 to 8080
> tomcat1 to 8081 and similarly for others,the other way is to
> go to individual directory and do it
>
> Please suggest/guide

Given that you appear to be on a *nix-like box, I'd be tempted to
just use shell-tools to do the editing instead of vim. You don't
mention what changes you need. However, assuming you have a
server.xml containing something like "<port>8080</port>" or
"<port>PORT PLACEHOLDER</port>", I'd do something like

bash$ for i in 0 1 2 3 4 5 6; do sed -i.bak
"s@<port>[^<]*</port>@<port>808${i}</port>@g"
/home/kaushal/tomcat${i}/server.xml ; done


(all on one line, FWIW, and the "<port>[^<]*</port>" bit
shouldn't be line-broken in case mailers between here and there
mung it) Things get a little trickier if you have more than 10
directories, but doable:

bash$ for i in `seq 0 15`; do sed -i.bak
"s@<port>[^<]*</port>@<port>$((8080+i))</port>@g"
/home/kaushal/tomcat${i}/server.xml ; done

This does create backups as server.xml.bak (you can omit the
"-i.bak" from the sed command if you don't want backups).

Hope this helps,

-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

No comments: