#!/bin/sh
orig=$1
var=${orig%.jpg}
var=`echo "$var" | grep -o "[0-9][0-9]$"`
cutten=${orig%[0-9][0-9].jpg}
sequence='{1,'
for i in `seq 2 $(( $var - 1 ))`; do
sequence=$sequence$i","
done
output=$cutten$sequence$var"}.jpg"
echo "$output"
#wget "$output"
次のimgリンクを使用して* 1.jpgファイルを* 20.jpgとしてhttp://foo.bar/some-image-20.jpg
返します。
http://foo.bar/some-image-{1,2,3,4,5,…,18,19,20}.jpg
エコーからwgetとして実行すると、期待どおりに動作します(出力は上記と同じです)。
-- (Date/Time) -- http://foo.bar/some-image-%7B1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20%7D.jpg
(Proceeds to resolve this whole one link, and fails)
ほぼ「{」を「%7B」に置き換え、「}」を「%7D」に置き換えます。どんなアイデアがありますか?
ベストアンサー1
ワイルドカードのダウンロードをサポートするWebサーバーはありません。各URLを個別にインポートする必要があります。
次のように元のスクリプトをできるだけ維持します。
#!/bin/sh
orig=$1
var=${orig%.jpg}
var=$(echo "$var" | grep -o "[0-9][0-9]$")
cutten=${orig%[0-9][0-9].jpg}
for i in $(seq 1 $(($var - 1))) ; do
echo $cutten$i.jpg
done | wget -i -
これは、ファイル(この場合はstdin)から取得するURLのリストを読み取るwgetのオプションを利用するため、-i
ファイルのリストをwgetにパイプすることができます。
(実行する前にダウンロードする内容を表示するには、wget -i -
に置き換えてくださいcat
。)