move file by year/mouth

Hello experts,

I have a directory which the files inside have different date.
Now I'd like to move them to folder year/mouth (2007/01 , 2007/02)

Have any suggestion?

thanks in advance for reading or anyposts.

for file in `ls -1 *.*`
do
dir="`stat -c "%y|%n" $file | cut -c1-4`/`stat -c "%y|%n" $file | cut -c6-7`"
echo $dir
if [ ! -d $dir ]
then
mkdir -p $dir
fi
cp $file $dir
done

thanks

but I use AIX
cannt use stat command:(

I write script do this job.
any one has better advise!?

#!/bin/ksh
sdir=/tmp/mars
sedarg=s/[0-9][0-9]:[0-9][0-9]/`date +%Y`/g
mouth=0
while [ $mouth -le 11 ]
do
 mouth=`expr $mouth + 1`
 for yeardir in `ls -lt $sdir | sed -e $sedarg | grep ^- |awk '{print $8}' |uniq`
   do
	if [[ -d $sdir/$yeardir/$mouth ]] ;then
		echo $sdir/$yeardir/$mouth is exist
	else 
		mkdir -p $sdir/$yeardir/$mouth
		echo create $sdir/$yeardir/$mouth ok!!
	fi
   done
 done

#move file
ls -lt $sdir | sed -e $sedarg | grep ^- |awk '{print $6"\t"$8"\t"$NF}'  >$$.out
exec < $$.out
while read F_MOUTH F_YEAR FILE_NAME
do
  case "$F_MOUTH" in
        Jan) mv $sdir/$FILE_NAME $sdir/$F_YEAR/1;;
        Feb) mv $sdir/$FILE_NAME $sdir/$F_YEAR/2;;
        Mar) mv $sdir/$FILE_NAME $sdir/$F_YEAR/3;;
        Apr) mv $sdir/$FILE_NAME $sdir/$F_YEAR/4;;
        May) mv $sdir/$FILE_NAME $sdir/$F_YEAR/5;;
        Jun) mv $sdir/$FILE_NAME $sdir/$F_YEAR/6;;
        Jul) mv $sdir/$FILE_NAME $sdir/$F_YEAR/7;;
        Aug) mv $sdir/$FILE_NAME $sdir/$F_YEAR/8;;
        Sep) mv $sdir/$FILE_NAME $sdir/$F_YEAR/9;;
        Oct) mv $sdir/$FILE_NAME $sdir/$F_YEAR/10;;
        Nov) mv $sdir/$FILE_NAME $sdir/$F_YEAR/11;;
        Dec) mv $sdir/$FILE_NAME $sdir/$F_YEAR/12;;
  esac
done
rm $$.out