Chỉ kết quả curl đầu ra phụ thuộc vào loại mime


0

Có thể làm cho curl chỉ lưu đầu ra của curl -o nếu tập tin thuộc loại mime nào đó?

Ví dụ: tôi có thể sử dụng lệnh sau để tải xuống một loạt hình ảnh từ máy chủ ...

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

Trên trang web đó, nó có thể trả về văn bản / html nếu không có hình ảnh với ID đó. Có cách nào để lọc kết quả curl để nó chỉ lưu các tệp loại hình ảnh / jpeg không?

Câu trả lời:


0

Đây là một cách để làm điều đó trong 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

Vòng lặp này thông qua tất cả 50 hình ảnh tiềm năng, tải xuống từng hình ảnh, kiểm tra xem đó có thực sự là hình ảnh không và xóa tệp đã tải xuống nếu không.

Nếu nền tảng của bạn có seq lệnh, bạn có thể đơn giản hóa vòng lặp theo cách này:

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

Trong các phiên bản bash mới hơn, bạn cũng có thể sử dụng {n..m} xây dựng:

for i in {1..50}
do
    ...
done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.