2017-11-03 13 views
0

CSVファイルには、次の形式の2つの列があります。Bash/Shell CSVファイルのリンクからファイルをダウンロード

名前:リンクは、;で区切られます。例

Product_1;www.example.com/product_1.png,www.example.com/product_2.png; 

私はそれが画像をダウンロードすることができますので、whileループを作成し、それに応じてそれらの名前を変更しようとしていますが、それを把握することはできませんため

//申し訳ありませんが、自分自身をmisexplained、Iこれは私が今

まで取得するために管理してきたものである可能

場合、私は_1、_2などとの最初の列の名前を取るためにダウンロードした写真をたいと言うことを意味し210

#!/usr/bin/env bash 
fname="$1" 
while IFS=";" read f1 f2 
do 
    mkdir -p "$f1"; 
    wget -P "$f1" "$f2" 
done < "$fname" 

これはファイルに対してのみ機能しますが、私の人生を楽にする方法はありますか?

+0

リンク数はご存知ですか?または、リンクの数は固定されていますか? –

+0

@ClintonLamどこでも名前/オブジェクトごとに2から12-13まで –

+0

すべてのリンクはカンマ '、'で区切られていますか? –

答えて

1

私はこれがあなたの望むものだと信じています。

#!/usr/bin/env bash 
fname="$1" 

# Loop through each line 
while IFS=";" read -r f1 f2 _; do 
    # Create directory 
    mkdir -p "$f1" 
    # Loop through comma separated links 
    IFS=, read -r -a items <<< "$f2" 
    for i in $items; do 

     # Auto sequencing file name 
     number=0; suffix=""; 
     while test -e "$f1/$f1$suffix.png"; do 
      ((++number)) 
      suffix=$(printf -- '-%02d' "$number") 
     done 
     outname="$f1/$f1$suffix.png" 

     # Download file 
     wget -P "$f1" -O "$outname" "$i" 

    done 
done < "$fname" 
+0

モバイルで働いてすみません。 –

+0

私はほしいものに非常に近いので、名前を変更する代わりに、名前を付けてフォルダに入れます。 –

+0

あなたは何を意味するのか分かりません。あなたの質問にそれを追加できますか? –

関連する問題