You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache NiFi 如何配置定时处理器通过通配符删除指定后缀文件

问题根因

通配符*是Linux Shell的内置功能,NiFi的ExecuteStreamCommand、ExecuteProcess处理器默认直接调用目标二进制程序,不会启动Shell环境,因此*不会被自动展开为匹配的文件列表,rm程序会把*.abc当作实际存在的文件名去查找,自然找不到对应文件。

可行解决方案

方案1:通过Shell调用rm命令(适合快速实现)

使用ExecuteProcess或ExecuteStreamCommand时按如下配置:

  • Command参数填:/bin/bash
  • Command Arguments按顺序添加两个参数:
    • 第一个参数:-c
    • 第二个参数:rm -f /home/dir1/dir2/*.abc

这个配置会启动bash执行后面的命令串,bash会自动完成通配符展开,再调用rm删除对应文件。

方案2:使用NiFi原生处理器组合(更稳定安全,推荐)

不需要调用外部命令,用NiFi自带的处理器实现匹配删除,规避通配符问题:

  1. 替换原有处理器为ListFile + DeleteFile组合
  2. 配置ListFile处理器:
    • Input Directory填:/home/dir1/dir2
    • File Filter填正则表达式:.*\.abc$(匹配所有后缀为.abc的文件)
    • 原有的30秒执行定时器保留在这个处理器的Scheduling标签页
  3. 将ListFile的success关系连接到DeleteFile处理器,DeleteFile无需额外特殊配置,会自动删除ListFile匹配到的所有文件。
原有方案失效原因说明
  • 直接给rm传带*的路径时,rm不会处理通配符,只会查找文件名完全匹配*.abc的文件
  • FetchFile处理器的File to Fetch字段仅支持单个具体文件路径,不支持通配符批量匹配

内容的提问来源于stack exchange,提问作者mikec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:12:02