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

如何使用wget获取文件名后缀并判断是否为.zip格式

检查wget下载文件是否为ZIP并自动解压的脚本实现

问题背景

给定下载链接:

url=https://website.com/download/media/123

通过该链接下载的文件可能是file.zip,也可能是其他格式。需要验证下载的文件是否以.zip结尾,同时询问是否可以通过以下伪代码逻辑实现需求:

wget $url -P ~/downloads
if [ downloaded file ends with .zip ]
then:
    unzip file.zip
else
    echo "Downloaded file doesn't end with zip!"
fi

可行的实现方案

你提供的逻辑思路没问题,但原代码里的判断部分是伪代码,无法直接运行,而且硬编码文件名file.zip也可能导致错误(实际下载的文件名不一定是这个)。以下是可以直接执行的完整脚本:

url="https://website.com/download/media/123"
download_dir=~/downloads

# 确保下载目录存在,不存在则创建
mkdir -p "$download_dir"

# 下载文件,同时捕获实际保存的文件名
downloaded_file=$(wget -P "$download_dir" --content-disposition "$url" 2>&1 | grep -oP 'Saving to:.*?"\K[^"]+')

# 判断文件名是否以.zip结尾
if [[ "$downloaded_file" == *.zip ]]; then
    # 解压到指定目录
    unzip "$download_dir/$downloaded_file" -d "$download_dir"
    echo "已成功解压ZIP文件"
else
    echo "下载的文件不是ZIP格式!"
fi

关键说明

  • 使用--content-disposition参数:让wget遵循服务器返回的Content-Disposition头,获取正确的文件名(避免URL无明确文件名时下载成乱码或默认名)
  • 捕获实际文件名:通过grep提取wget输出里的保存文件名,避免硬编码导致的错误
  • 目录检查:用mkdir -p确保下载目录存在,防止wget因目录不存在报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:01:08