我有{}范围内的url列表。 我可以在bash中用cURL下载它们,但问题是输出。 我可以使用#1,但我需要具有不同名称命名的文件(我已经在数组中存储这些名称)。 如何更改多个文件的输出名称?
我已经尝试通过文件下载文件,但是比多次下载慢了大约40%。
您可以遍历两个数组,一个使用您的URL进行下载,另一个使用所需的文件名,启动将并行运行的subprocess以下载文件。
#!/bin/sh # array of URLs urls=( http://www.example.com/file1.zip http://www.example.com/file2.zip http://www.example.com/file3.zip ) # names of downloaded files names=( myname1.zip myname2.zip myname3.zip ) for ((i = 0; i < ${#urls[@]}; ++i)); do printf "Launching subprocess to DL %s to %s\n" "${urls[i]}" "${names[i]}" curl -s -o "${names[i]}" "${urls[i]}" & done
或者,如果您想要使用类似于w / curl的方法,请尝试以下方法:
#!/bin/sh # desired filenames names=( myname0.zip myname1.zip myname2.zip ) for (( i = 0; i < ${#names[@]}; ++i )); do printf "Launching subprocess to DL http://example.com/file%s.zip to %s\n" "$i" "${names[i]}" curl -s -o "${names[i]}" http://example.com/file"$i".zip & done