olmo_pretrain_numpy / download.sh
nickosn's picture
Add files using upload-large-folder tool
72c93f5 verified
#!/bin/bash
# 输入文件路径(包含 URL 的文件)
input_file="urls.txt"
# 最大并发数(可以根据需要调整)
max_concurrent=15
# 检查输入文件是否存在
if [[ ! -f "$input_file" ]]; then
echo "错误:文件 $input_file 不存在!"
exit 1
fi
# 计数器,用于跟踪当前正在运行的任务数量
running_tasks=0
# 逐行读取文件中的 URL
while IFS= read -r url; do
# 检查 URL 是否为空
if [[ -z "$url" ]]; then
continue
fi
# 提取 preprocessed 后面的字段作为目录名
directory=$(echo "$url" | grep -oP '(?<=preprocessed/)[^/]+')
# 如果提取不到目录名,跳过该 URL
if [[ -z "$directory" ]]; then
echo "警告:URL $url 缺少有效的目录信息,跳过!"
continue
fi
# 创建目标目录(如果不存在)
mkdir -p "$directory"
# 提取文件名
filename=$(basename "$url")
# 下载文件到目标目录(并发执行)
(
echo "正在下载 $url$directory/$filename ..."
wget -q -O "$directory/$filename" "$url"
if [[ $? -eq 0 ]]; then
echo "下载成功:$directory/$filename"
else
echo "下载失败:$url"
fi
) &
# 更新并发任务计数器
running_tasks=$((running_tasks + 1))
# 如果达到最大并发数,等待部分任务完成
if [[ $running_tasks -ge $max_concurrent ]]; then
wait -n # 等待任意一个后台任务完成
running_tasks=$((running_tasks - 1))
fi
done < "$input_file"
# 等待所有剩余的任务完成
wait
echo "所有文件处理完成!"