1

@slhck дал полезный ответ на этот похожий вопрос.

Загрузка нескольких файлов с помощью wget и параметров обработки

Этот код был предоставлен для чтения URL-адресов из списка файлов текстовых файлов, а затем запускает цикл для загрузки каждого из них.

    #!/usr/bin/env bash 
    while read line 
      do   
        wget -c --load-cookies cookies.txt $line -O ${line##*/} 
    done < filelist

 

Поскольку я не знаком со сценариями оболочки, мне интересно, могли бы вы загрузить несколько файлов XML:

  • создание простого списка файлов с разделенными запятыми текстовыми файлами
  • читать из:

Filelist

renamedfile.xml, url-01.php
renamedFileDifferent.xml, url-02.php
specificFileRename.xml, "url-03"
newFilename.xml, "url-04"

  • прочитайте каждую строку
  • разбить строку на новый файл, удаленный файл
  • И запустить:  

    wget -O newfile remoteFile >/dev/null 2>&1 
    

 

Можно ли написать это в сценарии оболочки? Можете ли вы привести пример?

1 ответ1

1

Чтобы получить текст перед запятой, используйте ${line/,*} .

(Что на самом деле делает, так это заменяет ", *" или весь текст от запятой и далее пустой строкой, оставляя только часть строки перед запятой)

Чтобы получить текст после запятой, вы используете ${line/*,} .

Таким образом, полная команда будет:

while read line
  do
    wget -O ${line/,*} ${line/*,} >/dev/null 2>&1 
done < filelist

или в одну строку:

while read line; do echo wget -O ${line/,*} ${line/*,} >/dev/null 2>&1; done < filelist

В Windows (при условии, что вы установили wget с http://gnuwin32.sourceforge.net/packages/wget.htm и правильно указали свой путь), это будет:

for /f "delims=, tokens=1*" %a in (filelist) do wget -O %a %b

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .