按月压缩文件
#下面这行代码并不是注释,它的作用是表名该脚本使用哪个shell解释器
#! /bin/sh
#变量赋值,等号=两边不能有空格
#需要处理的文件目录
from=$1
#zip包存放目录
to=$2
#判断符号、运算符号等,左右两边的变量或值,与符号之间都需有空格
#判断源文件目录是否为空
if test ! -d $from
then
mkdir -p $from
fi
#path dir to
if test ! -d $to
then
mkdir -p $to
fi
#查询源文件路径下文件
fileList=(`find $from -maxdepth 1 -type f -name '*.jpeg'`)
declare -A myMap
len=${#fileList[@]}
echo "len:$len"
if test $len -gt 0
then
mkdir -p $to/${start}
#for filename in $fileList如此使用不规范,出现只遍历第一个值的错误情况
for filename in ${fileList[@]}
do
tt=`stat -c %y $filename| awk '{print $1}'`
tt=`date -d $tt +%Y%m`
echo "tt:$tt"
myMap[$tt]="${filename} ${myMap[$tt]} "
done
fi
for key in ${!myMap[*]};do
#将按月存放的源文件打成zip包,-q表示安静的执行,-m表示打包完成后删除源文件
zip -rqm $to/$key.zip ${myMap[$key]}
done
参考:
linux find 命令查找文件和文件夹
linux shell获取当前文件的时间
Linux之shell脚本编程实例–遍历所有文件,并按月份打成zip包