You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

批量按批次打开TXT文件中URL的Shell脚本需求

批量按批次打开TXT文件中URL的Shell脚本需求

嘿,完全懂你的痛点——一次性开上百个URL太耗内存,手动分批又麻烦。我给你写了个bash脚本,完美匹配你的所有要求:按10个一批顺序打开、绝不重复、到末尾自动通知,而且只有关闭终端后重新运行才会从头开始。

直接上可用的脚本:

#!/bin/bash

# 可自定义配置
URL_FILE="url.txt"       # 你的URL列表文件路径
BATCH_SIZE=10           # 每批打开的URL数量
PROGRESS_FILE=".url_progress"  # 隐藏的进度记录文件,无需手动操作

# 先检查URL文件是否存在
if [ ! -f "$URL_FILE" ]; then
    echo "⚠️ 错误:找不到URL文件 $URL_FILE,请确认路径正确!"
    exit 1
fi

# 统计总URL数量
TOTAL_URLS=$(wc -l < "$URL_FILE")

# 读取上次的进度,默认从第1行开始
if [ -f "$PROGRESS_FILE" ]; then
    CURRENT_LINE=$(cat "$PROGRESS_FILE")
else
    CURRENT_LINE=1
fi

# 计算本次要处理的URL范围
END_LINE=$((CURRENT_LINE + BATCH_SIZE - 1))
# 如果超出总数量,就设为最后一行
if [ $END_LINE -gt $TOTAL_URLS ]; then
    END_LINE=$TOTAL_URLS
fi

# 提取当前批次的URL
URLS=$(sed -n "${CURRENT_LINE},${END_LINE}p" "$URL_FILE")

# 没有URL可处理的情况
if [ -z "$URLS" ]; then
    echo "🎉 所有URL都已经打开完毕啦!"
    rm -f "$PROGRESS_FILE"
    exit 0
fi

# 打开当前批次的URL(这里用Firefox,换成你常用的浏览器命令即可)
echo "🔍 正在打开第 ${CURRENT_LINE} 到 ${END_LINE} 个URL..."
firefox $URLS

# 更新进度记录
echo $((END_LINE + 1)) > "$PROGRESS_FILE"

# 检查是否完成所有任务
if [ $END_LINE -eq $TOTAL_URLS ]; then
    echo "✅ 所有URL处理完成!下次运行会从头开始。"
    rm -f "$PROGRESS_FILE"
else
    echo "✅ 本次批次完成,下次运行将从第 $((END_LINE + 1)) 个URL继续。"
fi

使用说明:

  • 把代码保存成open_urls.sh文件
  • 给脚本添加执行权限:chmod +x open_urls.sh
  • 把你的URL列表放在url.txt里(每行一个URL
  • 每次在终端运行./open_urls.sh,就会打开下一批10个URL

贴心细节说明:

  • 进度会自动存在隐藏的.url_progress文件里,就算中途关闭终端再打开,下次运行也会接着上次的位置继续,不会重复打开URL
  • 当所有URL都打开完,脚本会自动删除进度文件,下次运行就会从头开始
  • 如果不用Firefox,把脚本里的firefox换成google-chromebrave-browser等你常用的浏览器命令就行

备注:内容来源于stack exchange,提问作者Jeisson Cadena

火山引擎 最新活动