【问题标题】:Regex patterns in find module (Ansible)查找模块中的正则表达式模式(Ansible)
【发布时间】:2019-08-27 18:01:35
【问题描述】:

我正在尝试返回服务器中的目录名称。我只想要那些有 3 个(并且只有 3 个)字符的目录。

我什至尝试使用 'exclude' 参数( excludes: '\S{4,}' )来确保它可以正常工作。没有。

以下是代码示例:

  - find:
      paths: /workdir
      file_type: directory
      use_regex: yes
      patterns: '\S{3}'
    register: oea

  - debug:
      msg: "{{ item.path }}"
    with_items: "{{ oea.files }}"

我希望所有目录都只有 3 个且只有 3 个字符,但实际输出是 /workdir 下的每个目录。

我是否以错误的方式使用正则表达式模式?

【问题讨论】:

  • @MonkeyZeus 我只在寻找目录
  • @gr0gu3 在这种情况下,您还需要添加$,这意味着行尾,所以它将是/^\S{3}$/

标签: regex ansible find


【解决方案1】:

这项任务似乎对我有用:

  - find:
      paths: /tmp
      file_type: directory
      use_regex: yes
      patterns: '^\S{3}$'
    register: oea

即添加^$ 来定义您要搜索的字符串的开始/结束。

顺便说一句,这仅匹配具有 3 个“符号”的目录(例如,a.c 将匹配),如果您想将其缩小以仅匹配拉丁字符(目录名称:abc),您应该使用如下:

patterns: '^[a-zA-Z]{3}$'

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 2018-06-28
    • 1970-01-01
    • 2020-02-14
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多