목록에서 wget 거부 / 제외 파일을 만들 수 없습니다 없으며 다른 사람들과 함께 파일을 wget가져

문제는 이것입니다 .URL 목록이있는 파일이 있습니다 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

내가하려는 wget것은 내가 그렇게하고 싶지 않다는 것을 알리는 것입니다 png.

$ wget -R png -i 링크 .txt

그러나 이것은 효과가 없으며 다른 사람들과 함께 파일을 wget가져 png옵니다. 파이프를 links.txt통한 grep연결은 실제 파일에서와 같이 옵션이 아니며 링크는이 형식 http://example.com/get/123987562으로되어 있으며 다음과 같이 해결 / 리디렉션됩니다.http://example.com/media/images/cool-pic.jpg

따라서 문제는 어떻게 특정 파일을 거부 / 제외 wget합니까?



답변

Wget 또는 적어도 내가 가지고있는 버전 이이 기능을 제대로 갖추고 있지 않은 경우 --server-response옵션은 여전히 ​​파일을 다운로드하는 것 같습니다. wget이 중요하지 않으면 curl이 더 나은 옵션 일 수 있습니다.

이 유형의 문제점에 대한 솔루션은 서버가 리턴 한 Content-Type을 보는 것입니다. 예를 들면 다음과 같습니다.

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

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

grep으로 결과를 필터링하면 허용 가능한 MIME 유형을 테스트 할 수 있습니다. 그런 다음 접근 방식을 일반화하여 파일 목록에 유효한 MIME 유형을 확인할 수 있습니다. 이것을 정리하고 쉘 스크립트에 넣으십시오.

#!/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

당신이 이런 식으로 부르는 것 :

mimechecker links.txt 'image/png'


답변