将一周内日期下不同名称的子文件夹下的txt文件上传到hdfs上,使用shell

当然,您可以使用以下 Shell 脚本来上传一周内日期下不同名称的子文件夹中的 txt 文件到 HDFS:

#!/bin/bash

# 获取当前日期
today=$(date +%Y-%m-%d)

# 获取上一周的开始日期和结束日期
last_week_start=$(date -d "$today -$(date +%w) days -7 days" "+%Y-%m-%d")
last_week_end=$(date -d "$last_week_start +6 days" "+%Y-%m-%d")

# 假设文件夹路径为 /path/to/folder
parent_folder="/path/to/folder"

# HDFS 目标路径
hdfs_target_path="/path/on/hdfs/"

# 循环遍历一周内的日期
current_date=$last_week_start
while [[ "$current_date" <= "$last_week_end" ]]
do
    # 构造日期对应的文件夹路径
    date_folder="$parent_folder/$current_date"

    # 检查日期文件夹是否存在
    if [ -d "$date_folder" ]; then
        # 循环遍历子文件夹
        for sub_folder in "$date_folder"/*
        do
            # 检查子文件夹是否存在
            if [ -d "$sub_folder" ]; then
                # 构造 HDFS 子目录路径
                hdfs_sub_path="$hdfs_target_path$current_date/$(basename "$sub_folder")"

                # 创建 HDFS 子目录
                hdfs dfs -mkdir -p "$hdfs_sub_path"

                # 上传子文件夹中的 txt 文件到 HDFS
                hadoop fs -put "$sub_folder"/*.txt "$hdfs_sub_path"
            fi
        done
    fi

    # 更新日期至下一天
    current_date=$(date -d "$current_date +1 day" "+%Y-%m-%d")
done

请注意,上述示例中的路径 /path/to/folder/path/on/hdfs/ 都需要替换为实际的文件夹路径和 HDFS 目标路径。脚本会遍历一周内的日期,并在每个日期文件夹下查找子文件夹,并将这些子文件夹中的 txt 文件上传到对应的 HDFS 子目录中。

确保您的系统上已经安装了 Hadoop 并且具有适当的权限来执行 HDFS 相关操作。

希望以上示例满足您的需求!如果您还有其他问题,请随时提问。