【问题标题】:Multiple brace expansion in wget URLwget URL中的多个大括号扩展
【发布时间】:2018-04-24 18:26:28
【问题描述】:

我目前正在尝试使用我制作的一个小脚本来抓取网站的图像:

for url in $my_url/{1..100}'.png' 
do
    wget "$url" || break
done

有时,图像被命名为 1.png 或 01.png 或 001.png

所以我想尝试下载每个名称的图像,以免错过任何图片。

类似:

for url in $my_url/{1..100}{01..100}{001..100}'.png' 

感谢您的帮助!

【问题讨论】:

    标签: linux bash wget brace-expansion


    【解决方案1】:

    你需要复制它们:

    for url in "$my_url"/{1..100}.png "$my_url"/{01..100}.png "$my_url"/{001..100}.png
    

    或者,使用数组有助于提高可读性

    urls=( 
        "$my_url"/{1..100}.png 
        "$my_url"/{01..100}.png 
        "$my_url"/{001..100}.png
    )
    for url in "${urls[@]}"; do ...
    

    【讨论】:

      【解决方案2】:

      您可以嵌套大括号扩展:

      url="http://example.com/"
      printf '%s\n' "$url"{{0..9},{00..99},{000..100}}.png
      

      【讨论】:

        【解决方案3】:

        尝试将所有内容包装在创建多种零填充格式的 for 循环中:

        for format in %01g %02g %03g
          do for num in $(seq -f $format 1 100)
            do wget ${my_url}/${num}.png || break  
          done  
        done
        

        您也可以使用 printf,但需要使用不同的语法,如 here 所示。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-24
          • 1970-01-01
          • 1970-01-01
          • 2016-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多