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

wget路径通配符使用求助,递归下载.nc文件遇多问题

解决wget递归下载GOES netCDF文件的问题

一、用wget实现通配符路径匹配并排除CSV目录

要递归下载https://satdat.ngdc.noaa.gov/sem/goes/data/full/*/*/*/netcdf/*.nc路径下的所有.nc文件,同时排除CSV目录,可通过wget的目录过滤和文件匹配参数实现,无需手动循环单个路径:

wget -r -nH -np -x --force-directories -e robots=off \
  --include-directories="/sem/goes/data/full/*/*/*/netcdf" \
  --exclude-directories="/sem/goes/data/full/*/*/*/csv" \
  --accept="*.nc" \
  https://satdat.ngdc.noaa.gov/sem/goes/data/full/

参数说明:

  • -r:开启递归下载
  • -nH:不生成以主机名为前缀的目录
  • -np:不回溯到上级目录(避免下载无关的父级内容)
  • -x:保持远程服务器的目录结构
  • --force-directories:强制创建所需的目录层级
  • -e robots=off:忽略服务器的robots.txt限制
  • --include-directories:指定仅包含符合匹配规则的netcdf目录路径
  • --exclude-directories:排除所有csv目录路径
  • --accept:仅下载后缀为.nc的文件

二、解决1981年01-09月无法下载的问题

你之前的循环命令仅能下载10-12月,大概率是因为shell对带前导零的序列支持问题,或者目标服务器的月份目录实际命名为1-9而非01-09。可通过以下两种方式修复:

方法1:用printf生成标准两位月份格式

确保循环生成的月份始终是两位数字,适配服务器目录命名:

for i in $(printf "%02d " {1..12}); do
  wget -r -nH -np -x --force-directories -e robots=off \
    https://satdat.ngdc.noaa.gov/sem/goes/data/full/1981/${i}/goes02/netcdf/
done

方法2:直接用wget过滤1981年的目标路径(无需循环)

跳过手动循环,让wget自动匹配1981年所有月份的netcdf目录:

wget -r -nH -np -x --force-directories -e robots=off \
  --include-directories="/sem/goes/data/full/1981/*/goes02/netcdf" \
  --exclude-directories="/sem/goes/data/full/1981/*/goes02/csv" \
  --accept="*.nc" \
  https://satdat.ngdc.noaa.gov/sem/goes/data/full/1981/

如果服务器上1981年的月份目录是不带前导零的1-9,只需把--include-directories中的路径调整为匹配不带前导零的格式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:01:10