Можно ли сделать curl только сохранить выходные данные curl -o если файл имеет определенный тип MIME?

Например, я мог бы использовать следующую команду, чтобы загрузить несколько изображений с сервера ...

curl -o file_#1.jpg http://wwww.mysite.com/images.php?id=[1-50]

На этом сайте он может вернуть text/html, если изображение с таким идентификатором отсутствует. Есть ли способ отфильтровать результаты скручивания, чтобы он сохранял только файлы типа image/jpeg?

1 ответ1

0

Вот один из способов сделать это в bash:

declare -i i=1
while (( $i <= 50 ))
do
    filename="file_${i}.jpg"
    curl -o ${filename} http://wwww.mysite.com/images.php?id=${i}
    if ! file ${filename} | grep -qi image
    then
      rm -f ${filename}
    fi
    i=$(($i + 1))
done

Это перебирает все 50 потенциальных изображений, загружает каждое, проверяет, действительно ли это изображение, и удаляет загруженный файл, если это не так.

Если ваша платформа имеет команду seq , вы можете упростить цикл следующим образом:

for i in $(seq 50)
do
    filename="file_${i}.jpg"
    curl -o ${filename} http://wwww.mysite.com/images.php?id=${i}
    if ! file ${filename} | grep -qi image
    then
      rm -f ${filename}
    fi
done

В более новых версиях bash вы также можете использовать конструкцию {n..m} :

for i in {1..50}
do
    ...
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .