shell递归复制文件夹(年月日结构)下的所有txt文件

因为项目需求,系统故障时能把备份文件重新放到指定目录下做重新计算,现在需要把备份目录下的所有txt文件全部复制到一个目录下

现在备份文件的目录结构是

/mnt/data/backup/
------------------------2022
-----------------------------06
---------------------------------20
------------------------------------xxx一些规定的目录名称
----------------------------------------所有的 .txt 文件

#!/bin/bash

#拷贝的开始时间
START_YEAR=2022
START_MONTH=06
START_DAY=28
#START_HOUR=00

#拷贝的结束时间
STOP_YEAR=2022
STOP_MONTH=06
STOP_DAY=30


#拷贝源数据的根目录
source_dir1="/mnt/data/backup/one"
source_dir2="/mnt/data/backup/two"

#拷贝的目的目录
dest_dir="/mnt/data/pdqtest/"



echo '=========================start copy_file...'

function recursive_copy_file()
{
	dirlist=$(ls $1)
	for name in ${dirlist[*]}
	do
	  if [ -d $1/$name ]; then
	    # 如果是目录,递归到最底层
	    recursive_copy_file $1/$name $2
	  else
	    cp $1/*.txt $2
	    echo "$1/*.txt"
	    # 直接复制txt
	    break
	  fi
	done  

} 

date=`date -d "$START_YEAR-$START_MONTH-$START_DAY" +%s`
end_date=`date -d "$STOP_YEAR-$STOP_MONTH-$STOP_DAY" +%s`
echo $date $end_date

while [ $date -le $end_date ]
do
  date_str=`date -d @$date "+%Y%m%d"`
  echo $date_str

  YEAR=${date_str:0:4}
  MONTH=${date_str:4:2}
  DAY=${date_str:6:2}

  source_dir11="${source_dir1}/$YEAR/$MONTH/$DAY"
  source_dir22="${source_dir2}/$YEAR/$MONTH/$DAY"

  recursive_copy_file $source_dir22 $dest_dir
  let date=$date+24*60*60
done

#recursive_copy_file $source_dir2 $dest_dir


分割指定长度字符串的方法
${date_str:0:4}
date_str变量的从第0位开始,4位长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值