У меня есть текстовый файл (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 и затем извлечь веб-страницу последняя строка без .htm в URL (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
Я смог выбрать URL из своего файла web.txt, но у меня есть эти две проблемы
Похоже, что Вы не перечитали 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.
while read url; do
newname="$(basename "$url" .htm)"
mkdir -p "/home/$newname"
wget -O "/home/$newname/$newname.htm" "$url"
done < web.txt