假设我正试图有效地下载一套50个课堂讲稿。这些笔记在大学网站的prof
子目录中。第45节讲稿以pdf格式放在lect45
子目录中,标题为lect45.pdf
。我的第一份pdf如下:
curl -O http://www.university.edu/~prof/lect1/lect1.pdf
如何使用cURL和bash有效地获取所有50个音符?我试图通过命令行而不是通过Python/Ruby/Perl脚本来实现这一点。我知道像下面这样的东西会产生很多404:
curl -O http://www.university.edu/~prof/lect{1..50}/lect{1..50}.pdf
那么什么会更好呢?我想要一个优雅的一行超过一个循环。
最佳答案
分几个过程进行:
for i in {1..50}
do
curl -O http://www.university.edu/~prof/lect$i/lect$i.pdf &
done
或者作为一行(只是不同的格式):
for i in {1..50}; do curl -O http://www.university.edu/~prof/lect$i/lect$i.pdf & done
&
使所有进程并行运行。不要害怕输出;shell告诉您已经启动了50个进程,这是一大堆垃圾邮件。稍后它会告诉你,他们每一个都终止了。又有很多产出。
你可能不想同时运行所有50个;-)
编辑:
你的例子使用两次
{1..50}
就构成了一个数字矩阵。例如,请参见echo {1..3}/{1..3}
以了解我的意思。我想这样你就创造了很多404。