我有一个 URL 列表,我想使用 --input-file 将其输入 wget。
但是我不知道如何同时控制 --output-document 的值,如果您一一发出命令,这很简单。我想将每个文档保存为其 URL 的 MD5。
cat url-list.txt | xargs -P 4 wget
xargs 在那里,因为我还想利用 max-procs 功能进行并行下载。
不要使用cat
. 您可以xargs
从文件中读取。从man
页面:
--arg-file=文件 -一份文件 从文件而不是标准输入中读取项目。如果你使用这个 选项,运行命令时标准输入保持不变。其他- 明智的做法是,标准输入从 /dev/null 重定向。
使用循环怎么样?
while read -r line
do
md5=$(echo "$line"|md5sum)
wget ... $line ... --output-document $md5 ......
done < url-list.txt
在您的问题中,您使用 -P 4 这表明您希望您的解决方案并行运行。GNU Parallel http://www.gnu.org/software/parallel/可以帮助你:
cat url-list.txt | parallel 'wget {} --output-document "`echo {}|md5sum`"'
你可以这样做:
猫 url-list.txt | 读取网址时;做 wget $url -O $( echo "$url" | md5 ); 完毕
祝你好运