更优化的方法来获取多个图像,这些图像仅在文件名中的图像编号不同

hpe*_*626 4 wget

我有一个download-list.txt看起来像这样的文本文件:

http://www.example.com/file/image1.png
http://www.example.com/file/image2.png
http://www.example.com/file/image3.png
.
.
.
Run Code Online (Sandbox Code Playgroud)

要下载我运行的列表中的文件

wget -i download-list.txt
Run Code Online (Sandbox Code Playgroud)

有没有我可以使用的 wget 魔法不需要我列出这样的列表?

evi*_*oup 6

如果您使用的是相当现代的 bash,则可以像这样使用 shell 扩展:

wget http://www.example.com/file/image{1..99}.png
Run Code Online (Sandbox Code Playgroud)

以上将尝试image1.png一直到image99.png. 显然,请根据需要选择您的范围。那些不存在的文件应该会抛出错误,但不会导致实际问题。如果需要,您可以使用一些 wget 选项或通过将 STDERR 重定向到 /dev/null 来抑制错误:

wget http://www.example.com/file/image{1..99}.png 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

对于真正数量庞大的文件,您可能会遇到命令行的限制 - 命令行上可以使用的参数数量是最大的。您不太可能遇到这个问题,但如果您正在处理大量文件,for 循环可能更安全:

for f in {1..1000}; do wget http://www.example.com/file/image$f.png; done
##  and the version sending STDERR to /dev/null:
for f in {1..1000}; do wget http://www.example.com/file/image$f.png 2> /dev/null; done
Run Code Online (Sandbox Code Playgroud)