You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在wget默认文件名后追加自定义文本?

解决方案

要实现给wget默认文件名追加自定义文本的需求,可以通过shell脚本批量处理,核心思路是先获取每个URL对应的默认文件名,再构造新文件名后执行下载。

方法:编写批量处理脚本

1. 定义处理函数

创建一个bash函数,自动获取默认文件名并生成带后缀的新文件名:

wget_append_suffix() {
    local url="$1"
    local suffix="$2"
    
    # 从服务器响应中提取Content-Disposition指定的文件名
    local default_name=$(wget --spider --server-response "$url" 2>&1 | awk -F 'filename=' '{if ($2) {sub(/["\r]/, "", $2); print $2}}')
    
    # 如果服务器未指定文件名,从URL中提取basename
    if [ -z "$default_name" ]; then
        default_name=$(basename "$url")
        # 处理URL以/结尾的情况(默认保存为index.html)
        if [ -z "$default_name" ] || [ "$default_name" = "/" ]; then
            default_name="index.html"
        fi
    fi
    
    # 构造新文件名:在主文件名后追加后缀(保留原扩展名)
    if [[ "$default_name" =~ \. ]]; then
        new_name=$(echo "$default_name" | sed -E "s/^(.*)(\.[^.]+)$/\1_$suffix\2/")
    else
        new_name="${default_name}_$suffix"
    fi
    
    # 下载文件到新文件名,保留服务器返回的文件属性
    wget -O "$new_name" --content-disposition "$url"
}

2. 批量处理URL列表

将需要处理的URL逐行保存到urls.txt文件中,然后执行以下循环批量处理:

# 自定义要追加的文本
CUSTOM_SUFFIX="sometext"

while read -r url; do
    # 跳过空行和注释行(以#开头)
    [[ -z "$url" || "$url" =~ ^# ]] && continue
    wget_append_suffix "$url" "$CUSTOM_SUFFIX"
done < urls.txt

关键细节说明

  • --spider参数:仅获取服务器响应头,不实际下载文件,大幅提升批量处理效率。
  • --content-disposition参数:确保正确识别服务器指定的文件名(而非仅依赖URL路径)。
  • 文件名处理逻辑:兼容三种场景——服务器指定文件名、URL路径带文件名、URL以/结尾(默认index.html),同时保留原文件扩展名。

内容的提问来源于stack exchange,提问作者swamp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:50:26