シーケンス番号と画像のURLを含むいくつかの列を持つcsvファイルがあります。ファイルは450行以上です。
1,text1,text2,http://image_a.jpg
2,text1,text2,http://image_b.jpg
3,text1,text2,http://image_c.jpg
.
.
.
目標は、ファイル名がシーケンスであるURLで画像をダウンロードすることです。私は次のスクリプトでこれを成功裏に達成しました
while IFS=, read col1 col2 col3 col4
do
curl ${col4} > ${col1}.jpg
done < myfile.csv
ここで、を使用してcurlコマンドを並行して実行したいと思いますxargs -P
。(&
プロセスの数を制限したいので、バックグラウンドで使用するだけでは不十分です。)を使用-I
し-R
た例を確認しましたが、xargsコマンドのcsvファイルの行から複数のフィールドを使用する方法を理解できません。
私はgnuparallelとwgetがより良いオプションかもしれないことを理解していますが、それらは私のUNIX環境では利用できません。
ありがとう。
curl
コマンドを作成してからxargsに渡す必要があるように思われます。
awk -F, '{print "curl '\''" $4 "'\'' > '\''" $1".jpg'\''"}' < input.csv | xargs -P2 -I {} sh -c '{}'
シェルの特殊文字が含まれている場合に備えて、URLとシーケンス番号/ファイル名を一重引用符で囲んでいるため、コマンドは少し見苦しく見えます(例&
)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加