我有多个文件,每个文件包含一个 URL。
我如何使用wget
读取每个文件并下载其中的URL,并将其保存为容器文件名?
例如:文件name.frm
包含:
http://some_domain.com/459830945.txt
我需要将 URL 保存为:文件name.txt
答案1
由于wget
可以-i
选择从文件读取一个或多个 URL,因此一个简单的 shell 循环就足够了:
for f in *.frm; do
wget -i "$f" -O "${f%.frm}.txt"
done
如果您不能使用该-i
选项,那么您可以使用 bash 内置函数从每个文件中读取一行read
:
for f in *.frm; do
IFS= read -r url < "$f" && wget "$url" -O "${f%.frm}.txt"
done
答案2
在同一目录中创建一个 bash 脚本,内容如下。
#! /usr/bin/env bash
SAVEIFS=$IFS
IFS=$'\n'
files=$(ls -1 *.frm)
for file in ${files[@]}; do
downloaded_file=$(echo $file | sed 's/\.frm/.txt/')
url_file=$(more $file)
wget $url_file -O $downloaded_file
done
IFS=$SAVEIFS
现在,执行 bash 文件。
bash script.sh
没有仅使用的解决方案wget
,您需要混合sed
(任何用于文本处理的实用程序)并读取 url,因为 wget 中带有 url 的文件没有文件的自定义名称。
我的要点。