我有一个temp.csv文件,有4列和大量行。 column0有一个链接,是来自互联网的图像,如'www.abc.com/one.jpg'等。我通常使用以下wget命令为任何单个链接下载任何链接:
wget http://www.sample.com/temp.jpg -O /home/tempfolder/
有什么方法可以使用或扩展wget命令来下载我的csv文件的column0下列出的所有链接并将其保存到文件夹中?
答案 0 :(得分:3)
cut -f1 -d, filename | while read url; do wget $url -O /home/tempfolder; done
命令:
cut -f1 -d, filename
“剪切”来自指定-f1
的以逗号(-d,
)分隔的行的字段1(filename
)。
然后我们将其传达给:
while read url
将cut
中的每一行读入变量url
。
然后我们wget
指定的url
。
修改:修复权限问题:
pushd /home/tempfolder ; cut -f1 -d, filename | while read url; do wget $url; done; popd
答案 1 :(得分:3)
我试过了 - wget无法保存文件。但是,这是一个修复:
cut -f1 -d, filename | while read url; do wget ${url} -O /home/tempfolder/$(basename ${url}); done
我希望这会有所帮助。
答案 2 :(得分:2)
只需确保在与CSV_FILE相同的目录中运行此脚本,或提供此文件的完整路径。
for link in `cat CSV_FILE | cut -d, -f1`
do
wget $link -O /home/tempfolder/
done
编辑:你让我详细说明。这是一个for循环,迭代该文件中的每个链接。 cat CSV | cut -d, -f1
仅提取包含链接的列。 for循环遍历所有这些链接,并逐个将它们放在名为link
的变量中。在每次迭代时,我们使用link
变量执行wget。您可以在命令行上运行此文件,也可以创建文件,在顶部添加此行:#!/bin/sh
,然后使用./file_name
运行它。我希望这足够详细。