Eu inventei isso:
wgetfiles.sh
:
filename=""
while read -r line
do
if [[ "$line" =~ (https?|ftp)\:\/\/ ]]
then
wget "$line" -P "$currdir";
else
currdir="$line"
if [ ! -d "$currdir" ]; then
mkdir "$currdir"
fi
fi
done < "$filename"
para um arquivo de texto de qualquer nome:
file.txt
:
Dir 1
http://www.somehost.com/files/tool.7z tools/cool-tool/
https://www.someotherhost.com/files/icon36.png tools/cool-tool/
Dir 2
http://www.idunno.net/other-tool.tar.gz tools/special-tool/
https://265.265.265.265/config.ini tools/special-tool/
Dir 3
ftp://www.myownsite.com/tools/script-to-run-tool.cmd tools/special-tool/
Isso permite usar qualquer arquivo de texto contendo o nome do diretório seguido por vários links. Cria os diretórios, se eles já não existirem. Nenhuma verificação é feita, portanto, certifique-se de ter diretórios seguidos de links, conforme mostrado.
Apenas uma pequena adição. Esta linha irá cobrir muitas situações:
wget "$line" -e robots=off -r -l 1 -nd -nc --wait 1 −−random−wait -R html,"index.*" -P "$currdir"
Irá ignorar robots.txt
( -e robots=off
), recursar em um diretório caso o link esteja em um diretório ( -r -l 1
), não baixará a hierarquia de diretórios do site - somente os arquivos ( -nd
), não baixará arquivos já baixados ( -nc
), aguardará aleatoriamente para baixar o próximo arquivo para ajudar ainda mais a evitar a rejeição do site ( --wait 1 −−random−wait
), e não baixará html
arquivos ou arquivos do site formulário index.*
( -R html,"index.*"
).
Além disso, para criar uma hierarquia de diretórios como Dir 1/subdir 1/sub-subdir 1
:
mkdir -p "$currdir"