如何使用 curl 从 FTP 站点下载名为 emp* 的所有文件

如何使用 curl 从 FTP 站点下载名为 emp* 的所有文件

如何获取从 FTP 站点目录下载的所有文件名为 emp* 的文件。

请提出建议。

答案1

bash成功地在 CentOS 6.5 FTP 镜像上测试了这一行代码,但为了防止滥用,我将其匿名化了:

for i in `curl -i ftp://ftp.example.com/pub/centos/6.5/updates/i386/repodata/ | awk '{print $9}' | grep ^8`; do curl -O http://ftp.eample.com/pub/centos/6.5/${i} ; done

解释一下,这会转到 ftp 服务器,获取目录列表(第一个 curl),将数据通过管道传输到 awk 中,仅返回文件名。最后,将其通过管道传输到 grep 中,仅匹配以数字 8 开头的文件,以模拟您的emp*要求。

这些经过过滤的文件名成为变量i,然后我使用一个简单的 for 循环来获取每个文件名,并将它们附加到第二个 curl 请求的 URL 中。我最终得到了这两个文件:

-rw-r--r--  1 adam  staff      362 11 Jul 13:22 819455e9f840760fcbdccf0283e4324ceabc8512f246e911d39424760ed1729e-primary.xml.gz
-rw-r--r--  1 adam  staff      360 11 Jul 13:22 8e4d3dd261375d31b35b6870e187d841633c68a400e4d11bb7234fea517cdbaa-other.xml.gz

答案2

如果我没有遗漏任何内容,您需要做的就是进入目录并使用“mget emp*”。如果您不想对每个文件 Y/N 做出响应,您可能需要更改“prompt”设置(这是一个切换命令)。

相关内容