目的のファイルの一部をホストしている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