9

我使用此命令下载一系列图像:

curl -O --max-time 10 --retry 3 --retry-delay 1 http://site.com/image[0-100].jpg

有些图像已损坏,因此我将其删除。

for i in *.jpg; do jpeginfo -c $i || rm $i; done

如何告诉curl在下载前检查文件是否存在?

我可以使用此命令来防止curl 覆盖现有图像:

chmod 000 *.jpg

但我不想重新下载它们。

4

2 回答 2

13

如果目标资源是静态的,curl则可以选择-z仅下载较新的目标副本。

使用示例:

curl -z image0.jpg http://site.com/image0.jpg

您的案例的示例:

for i in $(seq 0 100); do curl -z image$i.jpg -O --max-time 10 --retry 3 --retry-delay 1 http://site.com/image$i.jpg; done

于 2012-05-13T14:17:40.410 回答
7

不知道用 curl 来做,但你可以在运行 curl 命令之前用 Bash 检查它。

for FILE in FILE1 FILE2 …
do
  if [[ ! -e $FILE ]]; then
    # Curl command to download the image.
  fi
done
于 2012-05-13T12:42:07.437 回答