从文件中获取 wget 并根据文件名另存为

从文件中获取 wget 并根据文件名另存为

我有多个文件,每个文件包含一个 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 的文件没有文件的自定义名称。

我的要点

相关内容