Bash wget循环,其中URL中的数字保持不变

Bash wget循环,其中URL中的数字保持不变,bash,macos,pdf,terminal,wget,Bash,Macos,Pdf,Terminal,Wget,我想在Mac上下载一堆PDF,其中包含bash(版本3.2.57(1)-发行版)中的wget。PDF代表了1810年至1816年间几乎每天都会发表的旧报纸文章 我尝试了以下命令: for i in {10..16}; do wget -A pdf -nc -E -nd —no-check-certificate http://digital.slub-dresden.de/fileadmin/data/453041671-18$i0{1..9}0{1..9}/453041671-18$i0{1.

我想在Mac上下载一堆PDF,其中包含
bash
(版本3.2.57(1)-发行版)中的
wget
。PDF代表了1810年至1816年间几乎每天都会发表的旧报纸文章

我尝试了以下命令:

for i in {10..16}; do wget -A pdf -nc -E -nd —no-check-certificate http://digital.slub-dresden.de/fileadmin/data/453041671-18$i0{1..9}0{1..9}/453041671-18$i0{1..9}0{1..9}_tif/jpegs/453041671-18$i0{1..9}0{1..9}.pdf http://digital.slub-dresden.de/fileadmin/data/453041671-18$i{10..12}{10..31}/453041671-18$i{10..12}{10..31}_tif/jpegs/453041671-18$i{10..12}{10..31}.pdf; done 
不幸的是,URL包含几个我需要迭代的数字,这使得参数列表变得巨大,直到它最终超过最大限制,即。g

453041671-18$i0{1..9}0{1..9}/453041671-18$i0{1..9}0{1..9}tif/JPEG/453041671-18$i0{1..9}.pdf

我收到一条
参数列表太长
错误消息

如果以上面的链接片段为例,那么现有的唯一链接将是:

453041671-18000701/453041671-18000701_-tif/jpeg/453041671-18000701.pdf

其中所有月份的数字相同(18000701),与本例不同:

453041671-18000801/453041671-18000701_-tif/jpeg/453041671-18000701.pdf

或者正在尝试的任何其他组合
wget


我如何告诉
wget
在每月的每个迭代中分别设置
{1..9}
{10..12}
,所有数字都相同?

大括号扩展不知道其他大括号扩展。您不能有多个支架展开并同时更改它们。相反,必须使用
for
循环

for year in {10..16}; do
  for month in `seq -w 1 12`; do
    for day in `seq -w 1 31`; do
      wget ... 453041671-18$year$month$day/453041671-18$year$month${day}_tif/jpegs/453041671-18$year$month$day.pdf
      # The second day is in braces because otherwise it would parse as $day_tif.
    done
  done
done

如果您想减少生成的
wget
,可以将
wget
替换为
echo…>>列出
,然后使用
--input file
-i
)选项获取
wget
,以从该文件中提取URL。

谢谢您的回复,HTNW。似乎差不多了。然而,链接中的第二个日期被取消了一年,即。g<代码>http://digital.slub-dresden.de/fileadmin/data/453041671-18101120/453041671-181120_tif/jpegs/453041671-18101120.pdf.Edit:我修复了它
$i
必须用
$year
替换。在另一个项目中,我发现我在使用
wget
时遇到了另一个问题。大括号扩展似乎忽略了前导零,例如
http://digital.slub-dresden.de/fileadmin/data/453041671-1810722/453041671-1810722_tif/jpegs/453041671-1810722.pdf
。但是,它必须是
18100722
,但wget使用
1810722
。我们快到了!您好,HTNW,我修复了上面评论中提到的问题,分别用
seq-w 1 12
seq-w 1 31
替换了脚本中的大括号扩展。对不起,我太习惯Linux发行版(bash v4+)的
bash
。Mac是一个完整的主要版本,不能在大括号扩展中进行零填充。