123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #!/bin/bash
- list_files() {
- data_dir=$1
- echo "${data_dir} 文件列表:"
- ls -l "${data_dir}"
- }
- check_month_data() {
- # 设置目标目录
- data_dir1=$1
- data_dir2=$2
- # 获取上个月日期(格式:yyyymm)
- last_month=$(date -d "1 month ago" +%Y%m)
- # 存储提取到的所有日期
- found_dates=()
- # 遍历data目录下的所有文件
- while IFS= read -r -d $'\0' file; do
- filename=$(basename "$file")
- # 使用正则匹配文件名中的6位日期(独立部分)
- while IFS= read -r date_str; do
- # 验证日期格式(月份01-12)
- if [[ $date_str =~ ^([0-9]{4})(0[1-9]|1[0-2])$ ]]; then
- found_dates+=("$date_str")
- break # 每个文件只取第一个合法日期
- fi
- done < <(echo "$filename" | grep -oP '(?<!\d)\d{6}(?!\d)')
- done < <(find "${data_dir1}" -type f -print0)
- # 检查是否包含上个月日期
- contains_last_month=0
- for date in "${found_dates[@]}"; do
- if [[ "$date" == "$last_month" ]]; then
- contains_last_month=1
- break
- fi
- done
- # 输出最终结果
- if [ $contains_last_month -eq 0 ]; then
- echo "${data_dir1} 缺失日期:"
- echo "${last_month}"
- list_files "${data_dir2}"
- echo ''
- fi
- }
- check_day_data() {
- data_dir1=$1
- data_dir2=$2
- # 设置日期范围:上个月第一天至昨天
- first_day_last_month=$(date -d "last month" +%Y%m01)
- yesterday=$(date -d "yesterday" +%Y%m%d)
- # 生成日期范围内的所有日期
- all_dates=$(
- current_date="$first_day_last_month"
- while [ "$current_date" -lt "$yesterday" ]; do
- echo "$current_date"
- current_date=$(date -d "$current_date + 1 day" +%Y%m%d)
- done
- )
- # 提取文件名中的所有日期(格式yyyymmdd)
- file_dates=$(
- find "${data_dir1}" -type f -name '*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_*' \
- | grep -oE '_([0-9]{8})_' \
- | sed 's/_//g' \
- | sort -u
- )
- # 找出缺失日期
- missing_dates=$(comm -23 <(echo "$all_dates" | sort) <(echo "$file_dates" | sort))
- # 输出结果
- if [ -n "$missing_dates" ]; then
- echo "${data_dir1} 缺失日期:"
- echo "${missing_dates}"
- list_files "${data_dir2}"
- echo ''
- fi
- }
- check_month_data '/data/history/rxftp/clbf' '/data/jzftp/rx/HE_M_DEMP_CLBF'
- check_month_data '/data/history/rxftp/wdycbjytjbjcs' '/data/jzftp/rx/HE_M_DEMP_WDYCBJYTJBJCS'
- check_month_data '/data/history/rxftp/wdycbjytjcccs' '/data/jzftp/rx/HE_M_DEMP_WDYCBJYTJCCCS'
- check_month_data '/data/history/rxftp/xslcytj' '/data/jzftp/rx/HE_M_DEMP_XSLCYTJ'
- check_month_data '/data/history/dsjftp/hebei_province' '/data/dsjftp/hebei_province'
- check_month_data '/data/history/dsjftp/ten_northern_provinces' '/data/dsjftp/ten_northern_provinces'
- check_month_data '/data/history/jzftp/E_M_MTC_HOUSELISTED' '/data/jzftp/E_M_MTC_HOUSELISTED'
- check_month_data '/data/history/jzftp/HE_M_MTC_HOUSE' '/data/jzftp/HE_M_MTC_HOUSE'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_CHARGE' '/data/jzftp/HE_M_MTC_VEHICLE_CHARGE'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_CLLQ' '/data/jzftp/HE_M_MTC_VEHICLE_CLLQ'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_DEBX' '/data/jzftp/HE_M_MTC_VEHICLE_DEBX'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_INSPECTION' '/data/jzftp/HE_M_MTC_VEHICLE_INSPECTION'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_INSURANCE' '/data/jzftp/HE_M_MTC_VEHICLE_INSURANCE'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_MAINTENANCE' '/data/jzftp/HE_M_MTC_VEHICLE_MAINTENANCE'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_OIL' '/data/jzftp/HE_M_MTC_VEHICLE_OIL'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_OTHER' '/data/jzftp/HE_M_MTC_VEHICLE_OTHER'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_RENT' '/data/jzftp/HE_M_MTC_VEHICLE_RENT'
- check_month_data '/data/history/jzftp/HE_M_MTC_VEHICLE_SCGY' '/data/jzftp/HE_M_MTC_VEHICLE_SCGY'
- check_day_data '/data/history/rxftp/cljbxx' '/data/jzftp/rx/HE_D_DEMP_CLJBXX'
- check_day_data '/data/history/rxftp/HE_D_DEMP_WDYCBJRTJBJCS' '/data/jzftp/rx/HE_D_DEMP_WDYCBJRTJBJCS'
- check_day_data '/data/history/rxftp/HE_D_DEMP_WDYCBJRTJCCCS' '/data/jzftp/rx/HE_D_DEMP_WDYCBJRTJCCCS'
- check_day_data '/data/history/rxftp/xslcrtj' '/data/jzftp/rx/HE_D_DEMP_XSLCRTJ'
- check_day_data '/data/history/rxftp/yjbjrtj' '/data/jzftp/rx/HE_D_DEMP_YJBJRTJ'
|