尝试使用 curl 下载多个文件,文件不存在错误

尝试使用 curl 下载多个文件,文件不存在错误

我再次遇到了 curl 问题

我正在努力理解https://unix.stackexchange.com/questions/243134/curl-download-multiple-files-with-brace-syntax

但我完全不明白

这里的问题是,我试图下载所述目录中的所有文件,或者所有 .txt 文件,两者都很好。

这就是我正在尝试的:

curl --remote-name-all "ftp://user:password@ip/FileZillaTest.txt
curl --remote-name-all "ftp://user:password@ip/.txt
curl --remote-name-all "ftp://user:password@ip/
curl --remote-name-all "ftp://user:password@ip/FileZillaTest

但不幸的是这些都没有起作用,在这个例子中我尝试过

  1. 下载名称中包含“FileZillaTest”且扩展名为 .txt 的所有文件

  2. 下载所有 .txt 文件

  3. 下载所述目录中的所有文件(网站本身进入该目录)

  4. 下载名称中带有“FileZillaTest”的所有文件。

这些都结束了curl: (78) The file does not exist

重要提示:我无法单独命名,这有大约 100 个文件

不幸的是,我无法使用 wget

请随时询问更多信息,因为我不确定我说的是否足够

答案1

您正在尝试使用 curl 中不存在的通配符,并且您说不能使用 wget。

您可以使用 curl 创建要下载的文件列表:

curl -s -l ftp://user:password@ip > urls.txt

然后循环此列表。

对于 Linux

帖子 将文件中包含的 URL 列表传递给 curl 有以下建议:

xargs <urls.txt curl …
curl … $(cat urls.txt)
xargs -n 1 curl -O < urls.txt

或者,您可以使用 curl-K选项从特定格式的文件读取。请参阅 curl 手册页 此文件的格式。

对于 Windows

查看帖子 使用 cURL 下载目录中的所有文件

以下是您可能在.bat文件中使用的一些公式。

单行命令是:

for /f %%f in ('curl -s -l -u user:pass ftp://ftp.myftpsite.com/') do curl -O -u user:pass ftp://ftp.myftpsite.com/%%f

如果curl -l命令导致文件过多,请将其放入一个文件中并修改该文件以删除多余的文件。然后您将使用 FOR 命令 使用如下语法:

for %%f in (urls.txt) do curl -O -u user:pass ftp://your_ftp_server_ip/folder/%%f

相关内容