当文件名未知时如何获取文件?

发布于 2024-09-17 05:17:12 字数 214 浏览 6 评论 0原文

我正在尝试使用 wget 自动下载文件并从 cron 调用 php 脚本,文件名始终由文件名和日期组成,但是日期会根据文件上传的时间而变化。问题是无法确定文件何时更新,因此在检查目录之前永远无法真正知道最终名称。

示例文件名是 file20100818.tbz

我尝试在 wget 中使用通配符,但都失败了,都使用 * 和 %

提前致谢,

Greg

I am trying to automate the download of a file using wget and calling the php script from cron, the filename always consists of filename and date, however the date changes depending on when the file is uploaded. The trouble is there is no certainty of when the file is updated, and hence the final name can never really be known until the directory is checked.

An example filename is file20100818.tbz

I tried using wildcards within wget but they have failed, both using * and %

Thanks in advance,

Greg

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

手心的温暖 2024-09-24 05:17:18

您可以像这样 for 循环每个日期:

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

您可以增加 for 循环中的尝试次数。

You can for loop each date like this:

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

You can increase number of tries in for loop.

執念 2024-09-24 05:17:16

为了清楚起见,因为在搜索“wget 和通配符”时,此线程会显示在谷歌搜索中,并且因为上面的答案没有带来敏感的解决方案,并且似乎没有其他内容SO回答这个问题:

根据wget 手册,您可以在使用 ftp 时使用通配符并使用选项 -g on (--glob=on ),但是,除非您使用所有 -r -np -nd 选项,否则 wget 将返回错误。感谢 Wiseman20@ubuntuforums 为我们指明了方向。

示例代码:

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

For the sake of clarity, because this threads shows up in google search when searching "wget and wildcards" and because the answers above don't bring sensitive solution and there doesn't seem to be anything else on SO answering this:

According to the wget manual, you can use the wildcards when using ftp and using the option -g on (--glob=on), however, wget will return an error unless you are using all the -r -np -nd options. Thanks to Wiseman20@ubuntuforums for showing us the way.

Samplecode:

wget -r -np -nd --glob=on ftp://ftp.ncbi.nlm.nih.gov/blast/db/nt.*.tar.gz
梦幻之岛 2024-09-24 05:17:14

假设文件类型是不变的,则来自 wget man页:

您想要下载来自以下位置的所有 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/

Assuming the file type is constant then from the wget man page:

You want to download all the GIFs from
a directory on an HTTP server. You
tried wget
http://www.server.com/dir/*.gif, but
that didn't work because HTTP
retrieval does not support globbing.
In that case, use:

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

So, you want to use the -A flag, something like:

wget -r -l1 --no-parent -A.tbz http://www.mysite.com/path/to/files/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文