Tidak dapat membuat wget menolak / mengecualikan file dari daftar

2

Masalahnya adalah ini, saya punya file dengan daftar URL, katakan links.txt:

http://www.tipsfor.us/wp-content/uploads/2009/01/vim-editor-icon.png
http://wp.psyx.us/wp-content/uploads/2011/01/vi-vim-tutorial-1.gif
http://proft.me/static/img/vim/vi-vim-cheat-sheet.gif

Apa yang saya coba lakukan adalah memberi wgettahu bahwa saya tidak ingin menjadi pngseperti ini:

$ wget -R png -i links.txt

Tapi ini tidak berpengaruh dan wgetmasih membuat pngfile bersama dengan yang lain. Perpipaan links.txtmelalui grepbukanlah pilihan seperti di file yang sebenarnya link yang dalam bentuk ini http://example.com/get/123987562yang kemudian akan diselesaikan / diarahkan menjadi sesuatu sepertihttp://example.com/media/images/cool-pic.jpg

Jadi pertanyaannya adalah, bagaimana cara saya menolak / mengecualikan file tertentu wget?

grimgav
sumber
Apakah pesanan itu penting? Cobawget -i links.txt -R png
Kusalananda
Nggak. Ketertiban tidak penting.
grimgav

Jawaban:

1

Wget, atau setidaknya versi yang saya miliki kelihatannya tidak diperlengkapi untuk melakukan hal ini, --server-responseopsi tampaknya masih mengunduh file. Jika wget tidak kritis, maka ikal mungkin merupakan pilihan yang lebih baik.

Solusi untuk jenis masalah ini melibatkan melihat Konten-Jenis yang dikembalikan oleh server. Sebagai contoh:

curl -I http://www.tipsfor.us/wp-content/uploads/2009/01/vim-editor-icon.png

menulis sesuatu seperti yang berikut di stdout

http://www.tipsfor.us/wp-content/uploads/2009/01/vim-editor-icon.png
HTTP/1.1 200 OK
Server: nginx admin
Date: Thu, 03 Nov 2011 09:22:55 GMT
Content-Type: image/png
Content-Length: 35765
Last-Modified: Wed, 13 Apr 2011 05:19:19 GMT
Connection: keep-alive
Vary: Accept-Encoding
Expires: Thu, 10 Nov 2011 09:22:55 GMT
Cache-Control: max-age=604800
X-Cache: HIT from Backend
Accept-Ranges: bytes

Memfilter hasil itu dengan grep memungkinkan Anda menguji jenis mime yang dapat diterima. Anda kemudian dapat menggeneralisasi pendekatan untuk memeriksa tipe pantomim yang valid untuk daftar file. Merapikan ini dan memasukkannya ke dalam skrip shell:

#!/bin/bash
# in mimechecker.sh

LINKFILE=$1
PATTERN=$2

function mimefilter {
    URL=$1
    PATTERN=$2
    curl -sI $URL | egrep ${PATTERN} > /dev/null 2>&1
    if [ "$?" -eq "0" ] ; then
        wget $URL
    fi
}

(
    while read line
    do
        mimefilter $line $PATTERN
    done
) < $LINKFILE

Yang akan Anda panggil dengan cara ini:

mimechecker links.txt 'image/png'
Andrew Walker
sumber
Ide bagus, terima kasih telah berbagi dan menjawab pertanyaan saya. Itu sangat membantu.
grimgav