【Shell】批量创建日期文件夹

#!/bin/bash
#############################################################################
#批量创建日期文件夹
#调用方法:sh createdatedir.sh ip port username password srcname begndt overdt
#例:sh createdatedir.sh 10.11.44.28 22 saedw Oneb@nk123 EXT 20190401 20190404
##############################################################################

ip=$1
port=$2
username=$3
password=$4
srcname=$5
begndt=$6
overdt=$7

log_path=/data/script/edw/etlpath/log/

if [ ! -d ${log_path} ]; then
  mkdir -p ${log_path}
fi

shlog()
{
    local line_no msg
    line_no=$1
    msg=$2
    echo "[createdatedir.sh][$line_no]["`date "+%Y%m%d %H:%M:%S"`"] $msg ">> ${log_path}createdatedir_${etl_date}.log
    echo -e "\033[31;40;1m[createdatedir.sh][$line_no]["`date "+%Y%m%d %H:%M:%S"`"] $msg \033[39;49;0m"
}

judge()
{
    local line_no code tablename
    line_no=$1
    code=$2
    tablename=$3
    if [ $code -ne 0 ]; then
    shlog ${line_no} ${tablename}"失败!!!"
    exit 1
  else
    shlog ${line_no} ${tablename}"成功..."
  fi
}

#将输入的日期转为时间戳格式
begndate=`date -d "${begndt}" +%s`
overdate=`date -d "${overdt} 1 day" +%s`
#计算两个时间戳的差值除于每天86400s即为天数差
stampDiff=`expr $overdate - $begndate`
dayDiff=`expr $stampDiff / 86400`
shlog $LINENO "********************共需要创建${begndt}-${overdt}号共${dayDiff}个文件夹,是否确认?********************"
sleep 5

cd /data/${srcname}
#根据天数差循环输出日期
for((i=0;i<$dayDiff;i++))
do
    etl_date=`date -d "${begndt} $i day" +'%Y%m%d'`

    if [ ! -d "${etl_date}" ]; then
              shlog $LINENO "${etl_date}文件夹已创建"
            mkdir ${etl_date}
    else
            echo "${etl_date}文件夹已存在"
    fi

    chown -R ${username}:dp_app ${etl_date}
    chmod -R 747 ${etl_date}
done
shlog $LINENO "********************${srcname}目录下${begndt}-${overdt}号共${dayDiff}个文件夹全部创建********************"
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值