我正在尝试使用curl删除文件,然后再上传新的一组,我在尝试通配符文件时遇到了麻烦。
以下代码用于删除一个特定文件
curl -v -u usr:"pass" ftp://11.11.11.11/outgoing/ -Q "DELE /outgoing/configuration-1.zip"
但是当我尝试使用以下
通配文件时curl -v -u usr:"pass" ftp://11.11.11.11/outgoing/ -Q "DELE /outgoing/configuration-*.zip"
我在下面的错误
errorconfiguration-*: No such file or directory
QUOT command failed with 550
我可以在curl delete中使用通配符吗?
由于
答案 0 :(得分:1)
Curl在FTP服务器上的任何命令中都不支持通配符。为了执行所需的删除,您必须首先列出服务器上目录中的文件,过滤到您想要的文件,然后为这些文件发出删除命令。
假设您的文件位于ftp://11.11.11.11/outgoing
路径中,您可以执行以下操作:
curl -u usr:"pass" -l ftp://11.11.11.11/outgoing \
| grep '^configuration[-][[:digit:]]\+[.]zip$' \
| xargs -I{} -- curl -v -u usr:"pass" ftp://11.11.11.11/outgoing -Q "DELE {}"
该命令(未经测试,因为我无法访问您的服务器)执行以下操作:
outgoing/outgoing
目录的目录列表。configuration-
开头的文件名的目录列表,然后有一个或多个数字,然后以.zip
结尾。您可能需要针对不同的模式调整此正则表达式。xargs
,使用分隔符{}
插入每个匹配的名称,将curl
命令运行到DELETE
服务器上的每个文件。 您可以使用一个curl
命令通过将匹配的名称连接到一个删除命令中来删除所有文件,但这样做不太清晰,可以用作示例。