只用shell脚本实现,周一到周日七天内所有文件夹下的文件合并,并于OK文件进行数据量对比

以下是一个纯 Shell 脚本的示例,用于合并一周内的所有文件夹下的文件,并与 “OK” 文件进行数据量对比:

#!/bin/bash

# 合并后的文件输出路径
output_file="/path/to/output.txt"
# 存放数据量对比结果的文件
result_file="/path/to/result.txt"

# 要合并的日期范围,格式为 YYYY-MM-DD
start_date="2021-10-01"
end_date="2021-10-07"

# 循环遍历指定日期范围内的文件夹
current_date="$start_date"
while [[ "$current_date" != "$end_date" ]]; do
  # 当前日期的文件夹路径
  folder_path="/path/to/folders/$current_date"

  # 检查文件夹是否存在
  if [[ -d "$folder_path" ]]; then
    # 合并文件夹下的所有文件
    cat "$folder_path"/*.txt >> "$output_file"

    # 数据量对比
    ok_file="$folder_path/OK.txt"
    if [[ -f "$ok_file" ]]; then
      ok_lines=$(wc -l < "$ok_file")
      merged_lines=$(wc -l < "$output_file")

      echo "日期 $current_date:OK 文件有 $ok_lines 行,合并文件有 $merged_lines 行" >> "$result_file"
    else
      echo "日期 $current_date:找不到 OK 文件" >> "$result_file"
    fi
  else
    echo "日期 $current_date:找不到文件夹" >> "$result_file"
  fi

  # 增加一天,进入下一个日期
  current_date=$(date -I -d "$current_date + 1 day")
done

在上述示例中,您需要修改以下部分以适应您的实际情况:

  • output_file:合并后的文件输出路径。
  • result_file:存储数据量对比结果的文件路径。
  • start_date:要合并的日期范围的起始日期。
  • end_date:要合并的日期范围的结束日期。
  • folder_path:文件夹的路径。

脚本会循环遍历指定日期范围内的文件夹。对于每个文件夹,它会将该文件夹下的所有 TXT 文件合并到指定的输出文件中。然后,它会进行数据量对比,将对比结果记录到指定的结果文件中。对于每个文件夹,如果存在名为 “OK.txt” 的文件,则会统计行数并与合并文件的行数进行对比。

请根据实际情况修改代码中的路径和文件名,以确保脚本能够正确地合并文件并进行数据量对比,并将对比结果记录到指定的文件中。