Allan, Thanks once again. It was exactly what I needed. I've only just got back to using Unix/Linux in anger after a break of 5 or 6 years, so I'm terribly rusty.
Thanks. Tom. -- Original Message -- >Paul Millar wrote: >> >> Yep, but if I can add a bug-fix (see the sed R.E.) and a slight >> improvement: >> >> On Wed, 23 Jan 2002, Gordon Pearce wrote: >> > for i in *; do [ -f $i ] && mv -i $i `echo $i | sed -e 's/htm/shtml'`; >done; >> >> but if any of the files have spaces in their filename, it all becomes >> rather messy : >> >> for i in *; do >> [ -f "$i" ] && mv -i "$i" "`echo "$i"|sed -e 's/htm/shtml/'`"; >> done >> >> (this can all be one line, but that wouldn't look so good here) >> >> You might want to be a bit more specific with your sed, e.g. have >> 's/\.htm$/\.shtml$/' instead. This will only match at the end of the >> filename and also must match the dot too. >> >> > take note of the apostrophes and backticks!! >> >> And the many double quotes :) >> >> Cheers, >> >> Paul. >> >> > ----- Original Message ----- >> > From: <[EMAIL PROTECTED]> >> > To: <[EMAIL PROTECTED]> >> > Sent: Wednesday, January 23, 2002 5:31 PM >> > Subject: [scottish] Batch renaming of files >> > >> > >> > Is there a simple way of renaming a set of files? I want to merge two >> > directories >> > containing image files and change the names to something systematic like >> > 01.jpg, 02.jpg, etc. >> > >> > When I tried using mv, I get a message saying >> > "When moving multiple files, last parameter must be a directory" >> > >> > Presumably someone's already written a script to do this: any suggestions >> > where I can find one (which will run on Mandrake 8.0)? > >Hi, > >This all looks very nice - nothing like a random mixture of as many >types of quotes and other obscure symbols on one line to put the newbies >off. > >For the people who can't find the ` key on their keyboard, you could >perhaps check out a simple little command/program called "mmv" (multiple >move) which should do the job. It may come as standard with some >distros. > >However, I don't think this command (or the solutions people were >quoting) actually answer the question originally posed. > >I think the question is we have a directoy structure like > > mydirectory/pictureofme.jpg > mydirectory/otherpictureofme.jpg > hisdirectory/wow.jpg > hisdirectory/lookatthis.jpg > >And want to end up with: > > newdir/1.jpg > newdir/2.jpg > newdir/3.jpg > newdir/4.jpg > >In answer to the original question, I don't really know of a _simple_ >way to do this. > >You could try: > ># !/bin/bash > >mkdir newdir >a=1 >for i in mydirectory/* hisdirectory/*; do > cp "$i" newdir/$a.jpg > let a=$a+1 >done > >Look! I managed to do it on more than one line, I must be great since >everyone else only seems to be able to write a single line of code :). > >Thanks, > >Allan >-- >Don't argue with a fool. The spectators can't tell the difference. >-------------------------------------------------------------------- >http://www.lug.org.uk http://www.linuxportal.co.uk >http://www.linuxjob.co.uk http://www.linuxshop.co.uk >-------------------------------------------------------------------- > -------------------------------------------------------------------- http://www.lug.org.uk http://www.linuxportal.co.uk http://www.linuxjob.co.uk http://www.linuxshop.co.uk --------------------------------------------------------------------
