我有一个文本文件(web.txt),其中包含一长串具有此模式的 URL
http://www.example.com/ab1.htm
http://www.example.com/ab2.htm
http://www.example.com/bc1.htm
http://www.example.com/qw3.htm
.
.
http://www.example.com/xc15.htm
我想获取 URL 列表,然后提取 URL 中不带 .htm 的网页最后一个字符串 (ab1、ab2、bc1..xc15) 作为变量,然后创建一个以该名称命名的新文件夹。然后我想使用 wget 将该网页下载到新创建的文件夹中。
#!/bin/bash
NAMES=`cat web.txt` #urls from web.txt file
for NAME in $NAMES; do
echo "$NAME"
NEWNAME=#string from url
mkdir -p /home/$NEWNAME
wget $NAME
done
我能够从我的 web.txt 文件中获取 URL,但是我遇到了以下两个问题
- 如何从 url 中提取字符串?
- 如何循环并将网页下载到新创建的文件夹中?
答案1
while read url; do
newname="$(basename "$url" .htm)"
mkdir -p "/home/$newname"
wget -O "/home/$newname/$newname.htm" "$url"
done < web.txt
答案2
看起来你还没有重读man bash
足够多的次数。这很简单:
BASEDIR="$HOME"
for myurl in $( cat web.txt ) ; do
# erase everything "*" up to the last "/"
mydir="${myurl##*/}"
# erase the trailing "%" ".htm"
mydir=${mydir%.htm}
mkdir -p $BASEDIR/$mydir
# run the wget in a subshell, in the new directory
(cd $BASEDIR/$mydir;wget "$myurl")
done
恕我直言,一组不错的选项可供使用wget
(请阅读man wget
以了解它们是否也适合您)--no-parent --relative --page-requisites --convert-links -nv -t 3 --waitretry=6 --random-wait
,但是 YMMV。