我再次遇到了 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
但不幸的是这些都没有起作用,在这个例子中我尝试过
下载名称中包含“FileZillaTest”且扩展名为 .txt 的所有文件
下载所有 .txt 文件
下载所述目录中的所有文件(网站本身进入该目录)
下载名称中带有“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