On Saturday 11 Jan 2003 4:46 am, Todd Slater wrote:
> On Fri, 10 Jan 2003 20:31:05 -0800
>
> Matt Florido <[EMAIL PROTECTED]> wrote:
> > I was wondering if someone could assist me in creating a shell script
> > that will take the contents of a directory and rename them a certain
> > way.
> >
> > For example - 4 files in a directory:
> > a.jpg
> > ab.jpg
> > abc.jpg
> > abcd.jpg
> >
> > Renamed as:
> > 1-pic.jpg
> > 2-pic.jpg
> > 3-pic.jpg
> > 4-pic.jpg
> >
> > So it takes the contents of the directory regardless of the current
> > filename, and renames them in an incrementing format.
> >
> > ((N+1) + "-something.jpg")
>
> Change the variables to your taste. The printf in the script will write a
> leading 0 in the number--that's always a gotcha when the order is
> important. If you have more than 99 images, you can change the 2 to a 3
> and you'll get 001, 002 etc.
>
> Test it out first, then change "echo" to "mv", remove the quotes around
> the expression after that, take out the ==> of course.
> HTH,
> Todd
>
> #!/bin/bash
> EXT=".jpg"
> NAME=pic
> CNT=1
> for image in `ls /path/to/directory | sort`
> do
>         FCNT=`printf "%02d" $CNT`
>         echo "$image ==> $FCNT-$NAME$EXT"
>         CNT=$(($CNT+1))
> done
> exit

Just wondering - sorting numbered files is always problematic.  Could you pad 
to 3 digits, sort of

if length-of numberstring < 3, the for 3-length-of-numberstring print 0

then continue as before?

I haven't yet learned syntax for bash programming, but I guess you will 
understand what I mean.

Anne

Want to buy your Pack or Services from MandrakeSoft? 
Go to http://www.mandrakestore.com

Reply via email to