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