この問題により現在問題が発生しました。
正常に動作しません。
ファイルがあります。子供の鬼オーディオサンプルをダウンロードする必要があるため、HTMLソースファイルを他の場所から解析して内部(16進数)ファイル名を削除して内部ID番号を保存しました。次のようになります。
http://whatever.site/data/samples/hexfilename1.mp3 12345.mp3
http://whatever.site/data/samples/hexfilename2.mp3 12346.mp3
http://whatever.site/data/samples/hexfilename3.mp3 12347.mp3
http://whatever.site/data/samples/hexfilename4.mp3 12348.mp3
http://whatever.site/data/samples/hexfilename5.mp3 12349.mp3
各行の最初の部分だけが必要なので、残りの部分を選択的awk
にcut
削除しようとしますが、即座に次のことを行います。
$ wget -nc -i $(cut -f1 '-d ' inp)
それぞれ
$ wget -nc -i $(awk 'print $1' inp)
しかし、すべてのmp3ファイルをダウンロードしてしばらく作業をすると、非常に奇妙なことが起こります。
--2014-09-01 14:27:25-- http://whatever.site/data/samples/ID3%04
ああ。これがまさに皆さんが考えているのです。実際には、wget
通常のファイルのダウンロードが完了した後(そして終了する必要があります)、ダウンロードしたいバイナリmp3ファイルの最初のバイトです。しかし、なぜこれが起こるのですか?私が不器用な方法を作り出すなら2と入力してください一時ファイルをwget
パラメーター-i
とともに使用すると機能します。
$ cat inp | awk '{print $1}' > inp2
時差はなぜそんなに大きいのですか?子供の鬼インスタントで修正し、wget
?に直接渡す最も興味深いのは、インスタントバリアントを使用することもawk
できないため、cut
両方のツールには責任がないことです。
ベストアンサー1
うまくいかない理由は構文エラーが原因です。
wget -nc -i $(cut -f1 '-d ' inp)
...問題は、-i
スイッチに次のものが必要であることです。
- URLリストを含むローカルテキストファイル
- URLのリストを含むリモートテキストファイル
- ローカルファイルのリストを含むリモートHTMLファイル。
しかし、上記のコードが提供するのは、-i http://whatever.site/data/samples/hexfilename1.mp3
テキストやHTMLファイルではないということです。 man wget
説明する:
COLUMNS=72 man wget | grep -m1 -A 22 '\-i '
-i file
--input-file=file
Read URLs from a local or external file. If - is specified
as file, URLs are read from the standard input. (Use ./-
to read from a file literally named -.)
If this function is used, no URLs need be present on the
command line. If there are URLs both on the command line
and in an input file, those on the command lines will be
the first ones to be retrieved. If --force-html is not
specified, then file should consist of a series of URLs,
one per line.
However, if you specify --force-html, the document will be
regarded as html. In that case you may have problems with
relative links, which you can solve either by adding "<base
href="url">" to the documents or by specifying --base=url
on the command line.
If the file is an external one, the document will be
automatically treated as html if the Content-Type matches
text/html. Furthermore, the file's location will be
implicitly used as base href if none was specified.
修正内容は次のとおりです。
使用標準入力パラメータ
-i
は次のとおりです。ガレスレッドのコメント:cut -d' ' -f1 inp | wget -nc -i -
あるいは、この
bash
中央中心のアプローチは、もともと期待から約1バイトほどずれていました。文法エラーのコメント:wget -nc -i <(cut -f1 '-d ' inp)