Wget
Самым простым решением будет установка Wget и выполнение следующей команды:
wget --input-file=gwurls.txt
Wget автоматически переименовывает выходной файл, если файл с таким именем уже существует.
Переименование
Если вы удалите схему и хост (например, http://example.com/
) из URL, вы можете заменить все косые черты подчеркиванием (или любым другим символом) и сохранить эти файлы. Чтобы быть в безопасности, вы можете заменить существующее подчеркивание двойным подчеркиванием.
С bash это должно работать:
while read -r URL; do
OUTPUT="${URL#http://example.com/}"
OUTPUT="${OUTPUT//_/__}"
OUTPUT="${OUTPUT//\//_}"
curl --output "$OUTPUT" --url "$URL"
done < gwurls.txt
Как это устроено:
while read -r URL; do ... done < gwurls.txt
считывает содержимое gwurls.txt и сохраняет всю строку (без начальных или конечных пробелов) в переменной URL и выполняет ...
Три команды OUTPUT=...
выполняют упомянутые замены, используя манипуляции со строкой bash.
curl --output "$OUTPUT" --url "URL"
загружает файл и сохраняет его с нужным именем файла.
Структура каталогов
Также возможно воссоздать структуру каталогов сервера, используя аналогичный подход.
С bash это должно работать:
while read -r URL; do
OUTPUT="${URL#http://example.com/}"
curl --create-dirs --output "$OUTPUT" --url "$URL"
done < gwurls.txt
Здесь --create-dirs
заставляет cURL создавать каталог a
если OUTPUT читает a/1.pdf
.