Wget - リンクにちなんで名付けられたローカルディレクトリにファイルを保存する

Wget - リンクにちなんで名付けられたローカルディレクトリにファイルを保存する

私はwgetの使用が初めてなので、これが愚かな質問ではないことを願っています。

ファイルへのリンクにちなんで名付けられたローカル ディレクトリにファイルを保存するにはどうすればよいですか?

ダウンロードにリダイレクトが含まれていた場合は機能しないようです。

たとえば、 からファイルをダウンロードする場合、 wget を使用して、サブディレクトリとファイルwww.abc.com/news/xyz.jifという名前のディレクトリにローカル コピーを保存できます。www.abc.comnewsxyz.jif

ただし、ファイルxyz.jifが移動されwww.qwerty.com/old/xyz.jif、検索がそこにリダイレクトされた場合、ファイルは引き続きwww.abc.com...などに保存されます。

前にも言ったように、私はこの分野の初心者なので、問題を正しく説明できたことを願っています。

以下は簡単な実例です (wget を使用)。

wget --force-directories www.smugmug.com/photos/1235566-S.jpg

保存先は c:\www.smugmug.com/photos/1235566-S.jpg で、不正確c:\suz.smugmug.com/photos/1235566-S.jpgリダイレクト先のに保存されるはずでした。

答え1

申し訳ありませんが、最初は要点がわかりませんでした。そこで、完全に新しい回答です (手っ取り早く、しかも bash プログラミングなので Linux でしか機能しません)。cURL を使用してリダイレクトがあるかどうか (-wパラメータを使用) を判断します。結果に応じて、wget を使用して元の URL またはリダイレクト ターゲットを取得します。

url=www.smugmug.com/photos/1235566-S.jpg; redirurl=`curl -w "%{redirect_url}" --output /dev/null --silent ${url}`; if [ -z $redirurl ]; then wget -x $url; else wget -x $redirurl; fi

または、複数行の場合:

url=www.smugmug.com/photos/1235566-S.jpg;
redirurl=`curl -w "%{redirect_url}" --output /dev/null --silent ${url}`;
if
    [ -z $redirurl ];
then wget -x $url;
else wget -x $redirurl; fi

redirurlリダイレクト ターゲットがある場合は、そのターゲットに設定されます。ない場合は、wget元の URL で呼び出されます。ある場合は、wgetリダイレクト ターゲットを呼び出します。-xパラメーターにより、wgetサブディレクトリが作成されます。

もちろん、これは 1 レベルのリダイレクトのみを処理します。より堅牢にするには、リダイレクトがあるかどうかを再帰的にチェックする必要があります。したがって、この問題を信頼性の高い方法で解決したい場合、コマンドライン オプションだけの問題ではありません。

関連情報