从txt文件中批量下载url

从txt文件中批量下载url

我有大约 1000 个文本文件。0001.txt 0002.txt .....到 1000.txt

每个文本文件都有 50 个直接图像链接。我如何批量下载名为 0001、0002 的相应文件夹中的这些图像。

还重命名文件以保持下载的顺序 1 到 50。

示例链接 https://xyz点 com/photos/hdi3bfkdn497ndbdj3.jpg . . .

答案1

#! /usr/bin/env bash

if [ -z $1 ] || egrep -qv '^https?:\/\/[^[:space:]]+' $1; then
  echo "Usage: $0 FILE"
  echo "FILE must be a newline-separated list of URLs."
  exit
fi

INPUT_FILE=$1
OUTPUT_DIRECTORY="${INPUT_FILE%.*}"

mkdir -p $OUTPUT_DIRECTORY

i=1
while read URL; do
  FILENAME="${URL##*/}"
  curl -L $URL > "${OUTPUT_DIRECTORY}/${i}_${FILENAME}"
  i=$(($i+1))
done < $INPUT_FILE

该脚本将把给定文件中的所有 URL 下载到以输入文件命名的目录中,并删除扩展名。

[gnubeard@mothership: ~]$ cat example.txt
https://upload.wikimedia.org/wikipedia/commons/a/a9/Example.jpg
https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png
[gnubeard@mothership: ~]$ ./download_from_file example.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  9022  100  9022    0     0   477k      0 --:--:-- --:--:-- --:--:--  489k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2335  100  2335    0     0   117k      0 --:--:-- --:--:-- --:--:--  120k
[gnubeard@mothership: ~]$ ls example
1_Example.jpg  2_Example.png

如果您想要将其用于一千个文本文件,则可以使用如下 for 循环:

for FILE in $(ls *.txt); do ./download_from_file $FILE; done

相关内容