Как регистрировать успешно завершенные загрузки с помощью wget

Просто. Используйте подстановку, чтобы выбрать нужные файлы, и укажите в кавычках переменную, содержащую имя файла :

.

shopt -s nullglob
for file in./*.txt; do
    do_something_with "$file"
done

Вот и все.

Подробнее:


Обновление :подстановка не отвечает за эффект разделения слов, который вы видите. Отсутствие кавычек переменной.

Вы можете получить информацию о файле для ваших условий с помощьюstat

read size mtime < <(stat -c "%s %Y" "$file")
[[ $size -gt 1000 ]] && echo "too big"
[[ $mtime -lt $(date -d yesterday +%s) ]] && echo "too old"

Обновление 2 :Создание имени файла с большим количеством специальных символов требует смешивания различных механизмов цитирования, но с этим файлом по-прежнему можно делать что угодно.

$ filename='~ASDFzxcv!@#$%^&*()_+[]\{}|;:",.<>?`'"'"$' \a\t\n\r\f'".txt"
#          ^^ single quoted part ^^^^^^^^^^^^^^^^   
#                             double quoted part ^^^
#                                ANSI-C quoted part ^^^^^^^^^^^^^^

$ echo "$filename"
~ASDFzxcv!@#$%^&*()_+[]\{}|;:",.<>?`'   

.txt

$ printf "%q\n" "$filename"
$'~ASDFzxcv!@#$%^&*()_+[]\\{}|;:",.<>?`\' \a\t\n\r\f.txt'

$ date > "$filename"

$ cat "$filename"
Thu Apr 12 15:14:29 EDT 2018

$ ls -lt
total 3836
-rw-rw-r-- 1 jackman jackman      29 Apr 12 15:14 ~ASDFzxcv!@#$%^&*()_+[]\{}|;:",.<>?`' ?????.txt
                ︙

$ ls -lt --show-control-chars
total 3836
-rw-rw-r-- 1 jackman jackman      29 Apr 12 15:14 ~ASDFzxcv!@#$%^&*()_+[]\{}|;:",.<>?`'     

.txt
                ︙

Если вывод lsперенаправляется на что-либо, кроме терминала (например, файл или канал ), по умолчанию будет использоваться стиль --show-control-chars. Вы можете увидеть это, запустив ls -lt | cat. lsимеет другие параметры отображения; например, --quoting-style=WORD.

1
21.02.2020, 21:20
2 ответа

Анализ вывода wget или его журнала работает. Например,

$ wget -O fixedgear.html https://www.sheldonbrown.com/fixedgear.html 2>&1 | \
    awk '/saved/ { print $6 }' | \
    sed -e 's/^.//' -e 's/.$//'
README.md

Первый шаг в конвейере пытается загрузить файл, второй ищет wget, чтобы объявить, что файл был успешно сохранен, и если это так, выводит его, а последний шаг просто обрезает кавычки из имени файла.

Настройка значений --triesи --waitretryв wget также может помочь вашей первоначальной параллельной загрузке добиться успеха с первого раза.

0
28.04.2021, 23:22

Использовать GNU Parallel вместоxargs:

cat links.txt | parallel --joblog my.log -n 2 -P 16 wget -c -q -O

Теперь посмотрите на столбцы Exitvalв my.log.

Если вы собираетесь использовать значение выхода для повторной попытки, то в GNU Parallel есть опции для повторной попытки задания:--retriesи --retry-failed.

1
28.04.2021, 23:22

Теги

Похожие вопросы