【问题标题】:how to copy files matching a regex using ansible如何使用ansible复制匹配正则表达式的文件
【发布时间】:2020-07-31 03:33:58
【问题描述】:

我在特定的files/ 文件夹中有一堆文件。有些文件有不同的扩展名。我只想将以特定扩展名结尾的文件复制到目标目录。 我试过了,但它不起作用。

  - name: Copy only .txt files
    copy:
      src: files/*.txt
      dest: /var/files/

在这种情况下,我只需要复制 3 个文件,所以我可以为每个文件创建一个新任务,但我想知道如果我想匹配一个正则表达式该怎么做

【问题讨论】:

    标签: regex ansible


    【解决方案1】:

    让我们将这些文件存储在控制器中

    shell> tree files
    files
    ├── file1.txt
    ├── file2.txt
    └── file3.sh
    

    可以使用find。将任务委托给本地主机。否则,该任务将在远程主机上查找文件。例如

        - find:
            path: files
            file_type: file
            use_regex: false
            patterns:
              - '*.txt'
          register: result
          delegate_to: localhost
        - debug:
            msg: "{{ result.files|map(attribute='path')|list }}"
    

    给出文件列表

      msg:
      - files/file2.txt
      - files/file1.txt
    

    然后,使用列表并复制文件

        - copy:
            src: "{{ item }}"
            dest: var/files
          loop: "{{ result.files|map(attribute='path')|list }}"
    

    文件存储在远程主机时

    • 查找任务中移除delegate_to: localhost
    • 复制任务中设置remote_src: true(默认:false)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2023-04-10
      • 1970-01-01
      • 2020-07-25
      相关资源
      最近更新 更多