Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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
Ansible playbook查找子目录中的特定文件_Ansible - Fatal编程技术网

Ansible playbook查找子目录中的特定文件

Ansible playbook查找子目录中的特定文件,ansible,Ansible,我的目录结构如下,希望使用ansible而不是all获取特定的子目录文件 /mnt/server1 -> ----> yyy.deb ----> /mnt/server1/All/tttsss.deb ----> /mnt/server1/HS-CLONE/gggg.deb ----> /mnt/server1/HS-TEST/kkkk.deb 我只需要找到/mnt/server1/All/tttsss.deb

我的目录结构如下,希望使用ansible而不是all获取特定的子目录文件

/mnt/server1 ->
      ----> yyy.deb

      ----> /mnt/server1/All/tttsss.deb

      ----> /mnt/server1/HS-CLONE/gggg.deb

      ----> /mnt/server1/HS-TEST/kkkk.deb
我只需要找到
/mnt/server1/All/tttsss.deb和/mnt/server1/HS-CLONE/gggggg.deb
目录下的文件。我不需要所有其他文件

当我尝试使用下面的逻辑时,父目录文件
yyy.deb
也作为输出

- name: Ansible find files in subdirectory examples
  find:
         paths:  /mnt/server1
         file_type: file
         recurse: yes
         use_regex: yes
         patterns:
           - 'All'
           - "HS-CLONE"
           - '.*deb$'

  register: files_matched_subdirectory
上述逻辑输出为:

输出:

yyy.deb
/mnt/server1/All/tttsss.deb
/mnt/server1/HS-CLONE/gggg.deb
预期产出应为:

/mnt/server1/All/tttsss.deb
/mnt/server1/HS-CLONE/gggg.deb

之所以会发生这种情况,是因为find命令中有以下特定模式,该模式将与目录
/mnt/server1
中的
yyy.deb
匹配

patterns:
    - '.*deb$'
您可以使用
excludes
参数明确排除此特定文件:

- name: Ansible find files in subdirectory examples
  find:
         paths:  /mnt/server1
         file_type: file
         recurse: yes
         use_regex: yes
         patterns:
           - 'All'
           - "HS-CLONE"
           - '.*deb$'
         excludes: 
           - 'yyy.deb'
  register: files_matched_subdirectory
或者,您可以在模式参数中尝试以下操作:

patterns:
  - 'All'
  - "HS-CLONE"
  - '*/.*deb$'

谢谢你的回答。上述模式不起作用。是的,我可以省略这个文件。但我可能不知道同一个文件总是存在,文件名可以更改。正在寻找解决此问题的通用模式。但是我用你上面的模式测试了它不起作用。那可能不起作用。我只是想给出一个想法,我们可以调整模式部分。您可以尝试在/之前删除星号。谢谢。。我删除了星号,但它不起作用。将尝试不同的选项。