Я загружаю файлы с помощью этого script:
parallel --progress -j16 -a ./temp/img-url.txt 'wget -nc -q -P ./images/ {}; wget -nc -q -P ./images/ {.}_{001..005}.jpg'
Можно ли загружать файлы, просто проверить их на удаленной стороне, а если существует, создайте фиктивный файл вместо загрузки?
Что-то вроде:
if wget --spider $url 2>/dev/null; then
#touch img.file
fi
должен работать, но я не знаю, как объединить этот код с GNU Parallel.
Edit:
На основе ответа Ole я написал этот фрагмент кода:
#!/bin/bash
do_url() {
url="$1"
wget -q -nc --method HEAD "$url" && touch ./images/${url##*/}
#get filename from $url
url2=${url##*/}
wget -q -nc --method HEAD ${url%.jpg}_{001..005}.jpg && touch ./images/${url2%.jpg}_{001..005}.jpg
}
export -f do_url
parallel --progress -a urls.txt do_url {}
Он работает, но для некоторых файлов он не работает. Я не могу найти последовательность, почему она работает для некоторых файлов, почему она не подходит для других. Возможно, у него есть что-то с последним именем файла. Второй wget пытается получить доступ к currect url, но после этого команда touch просто не создает файл с запросом. Сначала wget всегда (правильно) загружает основное изображение без _001.jpg, _002.jpg.
Пример urls.txt:
http://host.com/092401.jpg (работает правильно, загружено _001.jpg.._ 005.jpg) http://host.com/HT11019.jpg (не работает, загружается только основное изображение)