|
@@ -0,0 +1,111 @@
|
|
|
|
+#!/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'
|