使用wget 1.12 centos 6批量下载并重命名输出文件

时间:2011-09-19 02:55:04

标签: input wget

使用文件wget

wget -c --load-cookies cookies.txt http://www.example.com/file

工作正常

wget -c --load-cookies cookies.txt http://www.example.com/file.mpg -O filename_to_save_as.mpg

当我使用

wget -c --load-cookies cookies.txt -i /dir/inputfile.txt

从文本文件中传递URL,使其按预期工作。有没有办法从文本文件传递一个URL,仍然重命名输出文件,如上面的例2所示。我尝试使用参数传递-O选项,但是wget告诉我“无效的URL http://site.com/file.mpg -O new_name.mpg:scheme missing”

我也试过在网址,引号和格式之后以

的方式转义
url = "http://foo.bar/file.mpg" -O new_name.mpg

有没有办法使用输入文件,仍然使用wget?

更改输出文件名

如果不是,shell脚本会更合适吗?如果是这样,应该怎么写?

1 个答案:

答案 0 :(得分:3)

我不认为wget支持它,但可以使用小的shell脚本。 首先,创建一个这样的输入文件(inputfile.txt):

http://www.example.com/file1.mpg    filename_to_save_as1.mpg
http://www.example.com/file2.mpg    filename_to_save_as2.mpg
http://www.example.com/file3.mpg    filename_to_save_as3.mpg

网址和文件名由tab字符分隔。 然后使用此bash脚本(wget2.sh):

#!/bin/bash
while read line
do
    URL=$(echo "$line" | cut -f 1 )
    FILENAME=$(echo "$line" | cut -f 2 )
    echo wget -c --load-cookies cookies.txt "$URL" -O "$FILENAME"
done

使用此命令:

echo input.txt | wget2.sh

更简单的解决方案是编写一个shell脚本,其中包含每个文件的wget命令:

#!/bin/bash
wget -c --load-cookies cookies.txt http://www.example.com/file.mpg1 -O filename_to_save_as1.mpg
wget -c --load-cookies cookies.txt http://www.example.com/file.mpg2 -O filename_to_save_as2.mpg
wget -c --load-cookies cookies.txt http://www.example.com/file.mpg3 -O filename_to_save_as3.mpg