wgetを使用してテキストファイルからファイル名を取得する

wgetを使用してテキストファイルからファイル名を取得する

目的のファイルの一部をホストしているWebサイトを見つけましたが、ファイルが多すぎて個別にダウンロードできませんでした。ファイル名はかなり標準的で再現可能な形式です(例:1_a、1_b、1_cなど)。

Linuxコマンドラインを使用してwget自動的にダウンロードする方法はありますか? 1行に1つのエントリを含むテキストファイルにファイル名を簡単に配置し、コマンドラインにそこから表示するように指示できますが、完全なURLではなく変更された部分だけがあるため、コマンドは次のようにする必要があります。

wget url.com/files/(bit from file).doc sourcefile.txt

デフォルトでは、ソースファイルのエントリを角かっこ内のビットに置き換えることができます。

また、1つのステップでは、大きな塊(何百もの)のファイルに順番に番号が付けられるので、そのビットにforループを使用できますか?それでは、コマンドラインで構文的にこれをどのように実行しますか?

答え1

forループを使用できます。

for x in a b c d e f g h ; do
    wget http://url.com/$x.doc
done

これはbashで次のように短縮できます。

for x in {a..h} ; do
    wget ...
done

ただし、forループがなくても次のショートカットを使用できます。

wget http://url.com/{a..h}.doc

名前が連続的でなくファイルから読み取る必要がある場合は、whileループを使用してください。

while read x ; do
    wget http://url.com/$x.doc
done < sourcefile.txt

答え2

相対URLを使用してファイルを生成した場合は、次のことができます。

wget -i /path/to/file -B http://base_url_here

たとえば、...などのさまざまなアイテムを含むことができるアイテムをダウンロードしhttp://www.myfiles.com/*.txtたい場合は、そのアイテムを含むファイルを作成します。*aa_1

a.txt
a_1.txt
a_2.txt
...

そして、次のコマンドを入力してください。

wget -i /path/to/file -B http://www.myfiles.com

このスイッチは、そのリンクがファイルから読み取られたことを-i示し、このスイッチは、ファイルから読み取られたすべてのリンクに指定されたパラメータをベースURLとして追加することを示します。wget-B

答え3

あなたはそれを使用することができますhttrackフルファイルディレクトリ(デフォルトではミラーサイトのすべてのエントリ)をダウンロードしたり、ファイルのみをダウンロードしたりするhttrackなど、特定のファイル拡張子でフィルタを指定できます。.pdf

以下についてもっと読むことができます。httrackフィルタリング容量特定の方法で名前付きファイルのみをダウンロードする場合は、この方法を使用する必要があります。

以下は、ワイルドカード機能のいくつかの例です。

  • *[file]または*[name]- たとえば、/以外のファイル名または名前がありますか?そして;
  • *[path] - 任意のパス(およびファイル名)、たとえばそうではありませんか?そして;
  • *[a,z,e,r,t,y] - a、z、e、r、t、yの文字
  • *[a-z]- どんな手紙
  • *[0-9,a,z,e,r,t,y]- 0..9とa、z、e、r、t、yの間のすべての文字

はい

$ httrack http://url.com/files/ -* +1_[a-z].doc -O /dir/to/output

スイッチは次のとおりです。

  • -*- ダウンロードするコンテンツのリストからすべてのコンテンツを削除します。
  • +1_[a-z].doc- 1_a.doc、1_b.docなどのファイルをダウンロードします。
  • -O /dir/to/output- ここに結果を書く

関連情報