
目的のファイルの一部をホストしている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
たい場合は、そのアイテムを含むファイルを作成します。*
a
a_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
- ここに結果を書く