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.
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