Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 卷曲通配符删除_Bash_Curl - Fatal编程技术网

Bash 卷曲通配符删除

Bash 卷曲通配符删除,bash,curl,Bash,Curl,我试图在上传新文件集之前使用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/configurati

我试图在上传新文件集之前使用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中使用通配符吗


谢谢

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 {}"
该命令(未经测试,因为我无权访问您的服务器)执行以下操作:

  • 输出服务器上
    传出/传出
    目录的目录列表
  • 筛选目录列表中以
    configuration-
    开头,然后有一个或多个数字,然后以
    .zip
    结尾的文件名。您可能需要针对不同的模式调整此正则表达式
  • 将匹配的名称提供给
    xargs
    ,后者使用分隔符
    {}
    插入每个匹配的名称,运行
    curl
    命令以
    删除服务器上的每个文件

  • 您可以使用一个
    curl
    命令删除所有文件,方法是将匹配的名称合并到一个delete命令中,但作为一个示例,该命令不太清晰。

    FTP中没有通配符。任何通配符支持都必须在客户端中完成,即希望支持通配符的客户端应获得目录列表,选择匹配的名称,并分别对每个名称执行命令。Curl没有这样做。这看起来很好,我只需要找出文件实际名称的正则表达式,例如test-test-test-7.17.1-1.117.zip(每个文件的数字会有所不同祝你好运!毫不犹豫地将grep放入“PCRE”模式(比我在示例中使用的BRE模式灵活得多)使用
    -P
    开关,如果您的grep支持它,或者直接将perl regex与
    ack
    perl
    :…一起使用,并且如果您不关心数字内容(例如,任何
    test-11.22.-333.44-4..5--5.6.-10.zip
    -type字符串),您可以使用类似
    ^test[:digital.-]zip$
    ,但如果您真的需要健壮性,这可能有点混乱。这不是真的。