Автоматическая команда curl для загрузки нескольких URL

Да, вы можете сделать это с помощью GNU find . Если ваши имена файлов не содержат символов новой строки, вы можете сделать следующее:

find -printf '%T@ %p\n' | sort -gk1,1

Объяснение

  • Параметр -printf в find может печатать любую информацию. В данном случае мы используем:

     Время последнего изменения файла% Tk в формате, указанном параметром 
    k, который такой же, как для% A. 
     @ секунд с 1 января, 1970, 00:00 GMT, с дробной частью. 
    % p Имя файла. 
     

    Итак, % T @% p \ n выведет время модификации файла в секундах с начала эпохи (% T @ ), пробел, а затем имя файла (% p ).

  • Затем они передаются в sort , которому предлагается выполнить числовую сортировку ( -n ) только по первому полю ( -k1,1 ).

Обратите внимание, что это вернет все файлы и каталоги. Чтобы ограничить его только обычными файлами (без каталогов, файлов устройств, ссылок и т. Д.), Добавьте -тип f в свою команду find .

Чтобы получить даты, удобочитаемые человеком, вы можете обработать вывод с помощью GNU date :

find -printf '%T@ %p\t\n' | sort -gk1,1 | 
    perl -lne 's/([^ ]*)//;chomp($i=`date -d \@$1`); print "$i $_"'

Здесь команда perl заменяет первую строку непробельных символов (дата ) с самим собой, обработанным GNU date .


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

find -printf '%p\t%T@\0' | sort -zt$'\t' -nk2 | tr '\0' '\n'

Это то же самое, за исключением того, что find выведет \ 0 вместо \ n в конце каждого файла. название. GNU sort может работать с выводом, разделенным нулем, поэтому он все еще может правильно сортировать. Последняя команда tr переводит \ 0 обратно в \ n .

-4
27.09.2018, 16:13
2 ответа

Попробуйте следующее:

1 )Создать файл MultiCurl.sh

/usr/bin/curl "https://google.com/1"
/usr/bin/curl "https://google.com/2"
/usr/bin/curl "https://google.com/3"

2 )Сделать его исполняемым с помощью chmod

chmod +x MultiCurl.sh

3 )Добавлено в Cron Job

*/60 * * * * $Scriptpath/MultiCurl.sh
0
28.01.2020, 05:20

В качестве альтернативы вы можете использовать команду wgetс флагом --i. Поместите все URL-адреса в файл list.txt, затем запуститеwget

cat list.txt
https://google.com/1 
https://google.com/2 
https://google.com/3 


wget --i./list.txt
0
28.01.2020, 05:20

Теги

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