404エラーが発生した後に「wget」をどのように停止しますか?

404エラーが発生した後に「wget」をどのように停止しますか?

次のように中括弧拡張を使用すると、順番に番号付けされたwget画像を簡単に取得できます。

$ wget 'http://www.iqandreas.com/sample-images/100-100-color/'{90..110}'.jpg'

番号付きの最初の10個の90.jpgファイルをインポート99.jpgし、100.jpg404: ファイルが見つかりません{00..200}エラー(私のサーバーには100個の画像しか保存されていません)。増やしてサーバーに多少の負担になることもあります。少なくとも問題があります)。

wget最初の404エラーが発生した後に停止する方法はありますか? (または他の理由でファイルが範囲内で失われる場合は、連続して2つの方が良いです。)答えには、中括弧拡張を使用する必要はありません。

ベストアンサー1

ループに満足している場合:

for url in 'http://www.iqandreas.com/sample-images/100-100-color/'{90..110}'.jpg'
do
    wget "$url" || break
done

wgetこれは失敗するまで拡張のすべてのURLに対して実行され、breakループを終了します。

連続して2回の失敗が予想されると、状況はより複雑になります。

for url in 'http://www.iqandreas.com/sample-images/100-100-color/'{90..110}'.jpg'
do
    if wget "$url"
    then
        failed=
    elif [ "$failed" ]
    then
        break
    else
        failed=yes
    fi
done

&&使用して||少し縮小できますが、if本当に見苦しくなります。

wget私はこれを行うことが組み込まれていると信じていません。

おすすめ記事