Wget - ファイルをlinkという名前のローカルディレクトリに保存する


4

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

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

ダウンロードにリダイレクトが含まれている場合はうまくいきません。

たとえば、私がからファイルをダウンロードしているとします。 www.abc.com/news/xyz.jif、私はローカルコピーを以下のディレクトリに保存するようにwgetを取得できます。 www.abc.com サブディレクトリあり news それからファイル xyz.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リダイレクト先

回答:


0

申し訳ありませんが、最初は要点を理解できませんでした。それで、完全に新しい答え(速くて汚い - そしてそれは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レベルのリダイレクトのみを処理します。より堅牢にするには、リダイレクトがあるかどうかを再帰的にチェックする必要があります。したがって、信頼性の高い方法でこの問題を解決したいのであれば、それは単にコマンドラインオプションの問題ではありません。


私はすでにそれを試してみました、それは残念ながら動作しません。それでも、リダイレクトされたURLではなく、元のURLの下にファイルを保存します。0(
Robin

私は私の説明ではっきりしていないと思います、申し訳ありません。 wget / curlがファイルを取得した場所と同じディレクトリ名でファイルを自動的に保存するようにします。私の最初の投稿からwww.abc.com/news/xyz.jifからファイルを取得しましたが、ファイルはwww.qwerty.com/old/xyz.jifに移動されました。 Cドライブからwget / curlを実行したと仮定すると、ダウンロードファイルの最後にはc:\ www.qwerty.com/old/xyz.jifがあります。
Robin

これは簡単に再現できる(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にそれを保存したはずです。あなたが与えられたカールの例では、ファイルをどこに保存するかをそれに伝えています。自動的にリダイレクトされたURLを取得する必要があります。
Robin

すみません、今私は理解しています - 私は私のコメントを削除し、私の答えを変えました。
tohuwawohu

私はLinuxを使用していませんが、それが正しい方向を示しています。 curlの "write_out"関数はかなり強力です。それを知るために時間をかけなければなりません。私は今必要なものがあります。再度、感謝します!!
Robin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.