2010-09-01 4 views
1

J'essaie d'automatiser le téléchargement d'un fichier en utilisant wget et en appelant le script php à partir de cron, le nom de fichier se compose toujours de nom de fichier et date, mais la date change selon le moment où le fichier est téléchargé. Le problème est qu'il n'y a aucune certitude quant à quand le fichier est mis à jour, et par conséquent le nom final ne peut jamais vraiment être connu jusqu'à ce que le répertoire soit vérifié.Comment wget un fichier lorsque le nom de fichier n'est pas connu?

Un nom de fichier exemple est file20100818.tbz

J'ai essayé d'utiliser des caractères génériques dans wget mais ils ont échoué, à la fois en utilisant * et%

Merci à l'avance,

Greg

Répondre

3

En supposant que la le type de fichier est constant puis à partir de la page de manuel wget:

Vous voulez télécharger tous les GIF de un répertoire sur un serveur HTTP. Vous essayé wget http://www.server.com/dir/ * .gif, mais qui ne fonctionnait pas parce que la récupération HTTP ne prend pas en charge globbing. Dans ce cas, utilisez:

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

Donc, vous voulez utiliser le drapeau -A, quelque chose comme:

wget -r -l1 --no-parent -A.tbz http://www.mysite.com/path/to/files/ 
+3

Bien sûr, cela ne fonctionnera que si le serveur répond avec une liste de fichiers du répertoire demandé, si elle ne constitue pas, vous ne pouvez deviner le nom de fichier comme le montre shamittomar. –

0

Vous pouvez boucle chaque jour comme celui-ci:

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

Vous pouvez augmenter le nombre d'essais dans la boucle for.

1

Par souci de clarté, parce que ces discussions se montre à la recherche google lors de la recherche « wget et » wildcards et parce que les réponses ci-dessus ne pas apporter la solution sensible et il ne semble pas être quelque chose d'autre sur SO répondre à cette:

Selon le manuel wget, vous pouvez utiliser les jokers lors de l'utilisation ftp et en utilisant l'option -g on (--glob=on), cependant, wget renverra une erreur sauf si vous utilisez toutes les -r -np -nd options. Merci à [email protected] pour nous montrer le chemin.

SampleCode:

wget -r -np -nd --glob=on ftp://ftp.ncbi.nlm.nih.gov/blast/db/nt.*.tar.gz 
Questions connexes