Как создать файл, если имя файла не известно? - PullRequest
1 голос
/ 01 сентября 2010

Я пытаюсь автоматизировать загрузку файла, используя wget и вызывая скрипт php из cron, имя файла всегда состоит из имени файла и даты, однако дата меняется в зависимости от того, когда файл загружен.Проблема в том, что нет никакой уверенности в том, когда файл обновляется, и, следовательно, окончательное имя никогда не будет действительно известно до тех пор, пока не будет проверен каталог.

Пример файла: file20100818.tbz

Iпопытался использовать подстановочные знаки в wget, но они потерпели неудачу, используя * и%

Заранее спасибо,

Грег

Ответы [ 3 ]

3 голосов
/ 01 сентября 2010

Если предположить, что тип файла постоянен, то из справочной страницы wget:

Вы хотите загрузить все GIF-файлы из каталога на HTTP-сервере.Вы пробовали wget http://www.server.com/dir/*.gif,, но это не сработало, поскольку HTTP-поиск не поддерживает глобализацию.В этом случае используйте:

wget -r -l1 --no-parent -A.gif http://www.server.com/dir/

Итак, вы хотите использовать флаг -A, например,

wget -r -l1 --no-parent -A.tbz http://www.mysite.com/path/to/files/
1 голос
/ 10 февраля 2014

Ради ясности, потому что эти темы отображаются в поиске Google при поиске "wget ​​and wildcards" и потому что ответы выше не приносят деликатного решения и, похоже, ничего не найдено еще на SO отвечая на это:

Согласно руководству wget вы можете использовать подстановочные знаки при использовании ftp и использовании опции -g on (--glob=on), однако wget вернет ошибка, если вы не используете все опции -r -np -nd. Спасибо Wiseman20 @ ubuntuforums за то, что показали нам путь.

Samplecode:

wget -r -np -nd --glob=on ftp://ftp.ncbi.nlm.nih.gov/blast/db/nt.*.tar.gz
0 голосов
/ 01 сентября 2010

Вы можете зациклить каждую дату следующим образом:

<?php
for($i=0;$i<30;$i++)
{
     $filename = "file".date("Ymd", time() + 86400 * $i).".tbz";
     //try file download, if successful, break out of loop.
?>

Вы можете увеличить количество попыток цикла.

...